Jquery 如果条件在每个功能中不起作用
我想根据if条件执行函数,但它不起作用。请建议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
$('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;');
}
});
});