Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何切换元素的title属性?_Javascript_Jquery_Html - Fatal编程技术网

Javascript 如何切换元素的title属性?

Javascript 如何切换元素的title属性?,javascript,jquery,html,Javascript,Jquery,Html,我有这个HTML: <i class="fa fa-check" title="click to accept"></i> <i class="fa fa-check checked" title="undo"></i> <i class="fa fa-check" title="click to accept"></i> 换句话说,我从所有元素中删除checked类,然后为单击的元素切换checked类。现在我想知道,如

我有这个HTML:

<i class="fa fa-check" title="click to accept"></i>
<i class="fa fa-check checked" title="undo"></i>
<i class="fa fa-check" title="click to accept"></i>

换句话说,我从所有元素中删除checked类,然后为单击的元素切换checked类。现在我想知道,如何对title属性执行相同的操作?

当使用$this.attr'title选中或取消选中元素时,尝试更改title的属性

jQuery

prop优先于attr 例如:

$('.fa-check').on('click', function(){
   var $el = $(this);
   var title = $(this).prop('title');

   if(title === 'undo'){
     // Reset state
     $el.removeClass('checked').prop('title', 'click to accept');
   } else {
     // Mark as checked
     $el.addClass('checked').prop('title', 'undo');
   }
});
这不是很简单吗

HTML:

JQUERY:

您的HTML应该如下所示


鼠标单击时自动更改检查。也许这就是你想要的。

$el.不是$el.removeClass'checked'没有意义。为什么不使用复选框?你怎么能指望一个不会使用鼠标的人能够点击呢?@zzzzBov我正在关注他所做的。。它不使用复选框来标记答案为已接受的答案。@stack,以解释无法访问的设计决策。SO背后的开发者是人类,因此并不完美。这是其中一种情况,在这种情况下,你最好不要跟随他们的领导。@stack,如果我没有注意到这样做包括单独的键盘控件来导航网站点击?如果$This已经是一个公认的答案,会发生什么?不是将被标记为已接受答案的新答案。。!这就是为什么我使用toggleClass而不是addClass。当$this已经是一个公认的答案时会发生什么?不是将被标记为已接受答案的新答案。。!这就是我使用toggleClass而不是addClass的原因。在您的原始代码中,您似乎试图删除所有选中的类并将其添加回单击的类。这就是它的作用。你还想做别的事吗?是的。。我正试着做些别的事。。我正在尝试删除除$this元素之外的所有选中类。因为我需要知道当前元素是撤消还是标记为已接受。所以如果我删除所有的ckecked类,就没有任何线索知道了。啊,好吧。我更新了我的例子,做我认为你想做的。没问题。谢谢这不会切换当前标题。它总是为$this元素设置undo。同时,当您单击该类时,它总是将该类切换为“checked”,因为以前它没有“checked”
$('.fa-check').on('click', function() {
   $el = $(this);
   $el.not($el).removeClass('checked');
   $el.toggleClass('checked');

   var title = 'click to accept' ;
   if ($el.hasClass('checked')) {
      title = 'undo';
   }
   $el.attr('title', title);
});
$('.fa-check').on('click', function(){
   $('.fa-check').removeClass('checked');
   $('.fa-check').attr('title','click to accept');
   $(this).toggleClass('checked');
   $(this).attr('title','undo');
});
$('.fa-check').on('click', function(){
   var $el = $(this);
   var title = $(this).prop('title');

   if(title === 'undo'){
     // Reset state
     $el.removeClass('checked').prop('title', 'click to accept');
   } else {
     // Mark as checked
     $el.addClass('checked').prop('title', 'undo');
   }
});
$('.fa-check').on('click', function(){
    $('.fa-check').removeClass('checked').attr('title', 'click to accept');
    $(this).addClass('checked').attr('title', 'undo');
});
<i class="fa fa-check"></i>
<i class="fa fa-check"></i>
<i class="fa fa-check"></i>
.checked {color: red;}
.fa-check {cursor:pointer;}
$('.fa-check').click(function() {
if($(this).attr('class')=='fa fa-check checked'){
    $(this).toggleClass('checked');
}else{
    $('.fa.fa-check.checked').removeClass('checked');
  $(this).toggleClass('checked');
}
});
$('.fa-check').mouseover(function() {
    $(this).attr('title','click to accept');
    $('.fa.fa-check.checked').attr('title','undo');       
});
<i class="fa fa-check" title="click to accept"></i>
<i class="fa fa-check" title="click to accept"></i>
<i class="fa fa-check" title="click to accept"></i>
$('.fa-check').on('click', function(){
   $el = $(this);
   $elnot = $('.fa-check.checked');
   $elnot.not($el).removeClass('checked');
   $elnot.attr('title', 'click to accept');
   $el.toggleClass('checked');
   if($el.hasClass('checked')){
      title = 'undo';
   }
   $el.attr('title', title);
});