Jquery 如果条件在每个功能中不起作用

Jquery 如果条件在每个功能中不起作用,jquery,Jquery,我想根据if条件执行函数,但它不起作用。请建议 $('toggle')。每个(函数(即){ $('toggle')。在('click',function()上{ var selectedid=$('toggle').attr('id'); 如果(selectedid=='Test-selected\'+i){ $(this.html('Test').attr('id','') .append(“”).removeClass('tested'); }否则{ $(this.html('Tested

我想根据if条件执行函数,但它不起作用。请建议

$('toggle')。每个(函数(即){
$('toggle')。在('click',function()上{
var selectedid=$('toggle').attr('id');
如果(selectedid=='Test-selected\'+i){
$(this.html('Test').attr('id','')
.append(“”).removeClass('tested');
}否则{
$(this.html('Tested').attr('id','Test-selected'+i).addClass('Tested'))
.append(“”.css('padding','8px 52px 8px 13px!important;');
}
});
});
应该是

 var selectedid =  $(this).attr('id');
/* ... */
$(this).on('click', function(){
甚至更好

 var selectedid =  this.id;
最后一个更好的原因是,原生javascript几乎总是更快。如果执行
$(this)
操作,则将
this
放入jquery函数(将其转换为jquery对象)。然后使用
attr()
循环遍历属性,直到它们是
id
this.id
不做这两件事,只给你
this
的id


让我们把它变成一个代码回顾 第一轮 伊玛就停在这里,因为你已经标出了答案。但这应该可以,但你可以提高很多

应该是

 var selectedid =  $(this).attr('id');
/* ... */
$(this).on('click', function(){
甚至更好

 var selectedid =  this.id;
最后一个更好的原因是,原生javascript几乎总是更快。如果执行
$(this)
操作,则将
this
放入jquery函数(将其转换为jquery对象)。然后使用
attr()
循环遍历属性,直到它们是
id
this.id
不做这两件事,只给你
this
的id


让我们把它变成一个代码回顾 第一轮
伊玛就停在这里,因为你已经标出了答案。但是这应该会有很大的改进。

正确的代码应该是这样的

$('toggle').each(function(i, e){
    $(this).on('click', function(){

    var selectedid =  this.id;


    if(selectedid == 'Test-selected_' + i){
        $(this).html('Test').attr('id', '')
        .append("").removeClass('tested');
    }else{
        $(this).html('Tested').attr('id', 'Test-selected_' + i).addClass('tested')
        .append("<span class='toggle-selected'></span>").css('padding', '8px 52px 8px 13px !important;');
    }
    });
});
$('toggle')。每个(函数(即){
$(此)。在('单击',函数()上){
var selectedid=this.id;
如果(selectedid=='Test-selected\'+i){
$(this.html('Test').attr('id','')
.append(“”).removeClass('tested');
}否则{
$(this.html('Tested').attr('id','Test-selected'+i).addClass('Tested'))
.append(“”.css('padding','8px 52px 8px 13px!important;');
}
});
});

正确的代码应该是这样的

$('toggle').each(function(i, e){
    $(this).on('click', function(){

    var selectedid =  this.id;


    if(selectedid == 'Test-selected_' + i){
        $(this).html('Test').attr('id', '')
        .append("").removeClass('tested');
    }else{
        $(this).html('Tested').attr('id', 'Test-selected_' + i).addClass('tested')
        .append("<span class='toggle-selected'></span>").css('padding', '8px 52px 8px 13px !important;');
    }
    });
});
$('toggle')。每个(函数(即){
$(此)。在('单击',函数()上){
var selectedid=this.id;
如果(selectedid=='Test-selected\'+i){
$(this.html('Test').attr('id','')
.append(“”).removeClass('tested');
}否则{
$(this.html('Tested').attr('id','Test-selected'+i).addClass('Tested'))
.append(“”.css('padding','8px 52px 8px 13px!important;');
}
});
});
  • 附加事件处理程序的选择器不正确,因为您使用的是类前缀
    ,即
    $('.toggle')
  • 附加事件处理程序不需要
    .each()
  • 您可以使用hasClass('tested')
  • ,并执行条件操作
    $('.toggle')。打开('click',函数(e){
    e、 预防默认值();
    var self=$(这是);
    if(self.hasClass('tested')){
    html('Test')
    .removeClass(“已测试”);
    }否则{
    html('Tested')
    .addClass(“已测试”)
    .附加(“”)
    .css('padding','8px 52px 8px 13px!importan;');
    }
    });
    
    
    
  • 附加事件处理程序的选择器不正确,因为您使用的是类前缀
    ,即
    $('.toggle')
  • 附加事件处理程序不需要
    .each()
  • 您可以使用hasClass('tested')
  • ,并执行条件操作
    $('.toggle')。打开('click',函数(e){
    e、 预防默认值();
    var self=$(这是);
    if(self.hasClass('tested')){
    html('Test')
    .removeClass(“已测试”);
    }否则{
    html('Tested')
    .addClass(“已测试”)
    .附加(“”)
    .css('padding','8px 52px 8px 13px!importan;');
    }
    });
    
    
    
    我想用$替换$('toggle')。在('click',function(){上用$(这个)。在('click',function(){@Martijn),谢谢你的回答和深入的解释。我希望我从你的帖子中学到很多。我想用$(这个)替换$('toggle')。在('click',function(){上用$(这个)。在('click',function(){@Martijn,谢谢你的回答和深入的解释。我希望我从你的帖子中学到了很多。在第一行,你没有定义天气切换是if或class selector,在第二行,你必须使用这个关键字,而不是再次说toggle,当你使用每一行时,它将引用该切换,而你没有定义天气切换的第一行是if或者类选择器,在第二行中,而不是再次说切换,你必须使用此关键字,它将在你使用每个选项时引用该切换。多么好,以我的名字回答,解释更少,并获得“已接受答案”的分数:')欢迎周一。哇,太好了,以我的名字回答,解释更少,并获得“已接受答案”的分数“接受答案”。:)欢迎星期一。
    $('.toggle').each(function(i, e) {
      $(this).on('click', function() {
        if (this.id == 'Test-selected_' + i) {
          $(this).html('Test').data('tested', '') 
        } else {
          $(this).html('Tested').data('tested', 'Test-selected_' + i)
        }
      });
    });
    
    $('toggle').each(function(i, e){
        $(this).on('click', function(){
    
        var selectedid =  this.id;
    
    
        if(selectedid == 'Test-selected_' + i){
            $(this).html('Test').attr('id', '')
            .append("").removeClass('tested');
        }else{
            $(this).html('Tested').attr('id', 'Test-selected_' + i).addClass('tested')
            .append("<span class='toggle-selected'></span>").css('padding', '8px 52px 8px 13px !important;');
        }
        });
    });