[英]jQuery Conditional based on inner HTML content of an element
如果元素的内部 HTML 为 0,我想使用 javascript/jQuery 更改元素的类
我尝试了下面的代码,但似乎没有用。
var myElement = jQuery('.thisclass');
for(var i=0; i<myElement.length; i++){
if(myElement[i].innerHTML == ' 0 '){
jQuery('.thisclass').toggleClass('.newclass');
}
}
有人可以指导我吗? 我在这里做错了什么? 有没有更简单的方法来做到这一点(全部使用jQuery)
jsfiddle - http://jsfiddle.net/rm5Sp/
这应该可以解决问题:
$(".thisclass").each(function() {
if($(this).html() == "0") {
$(this).removeClass("thisclass");
$(this).addClass("thatclass");
}
});
也许删除零周围的空格会有所帮助?
myElement[i].innerHTML == '0'
另外,试试这个代码,看看警报框是否是你所期望的:
var myElement = jQuery('.thisclass');
for(var i=0; i<myElement.length; i++){
alert( myElement[i].innerHTML );
if(myElement[i].innerHTML == ' 0 '){
alert( "Toggling" );
jQuery('.thisclass').toggleClass('.newclass');
alert( "Toggled" );
}
}
第一个框将显示innerHTML 是什么。 第二个将向您显示条件正在起作用。 第三个会告诉你 jQuery 是否有效。
这一行是一个问题:
jQuery('.thisclass').toggleClass('.newclass');
您需要在此处使用当前元素。 此外,当您执行 addClass/removeClass/toggleClass 时,您不需要在类名中使用点(“.”)。 会是这样的。
myElement[i].toggleClass('newclass');
最有可能的问题是您的toggleClass
参数中有一个额外的点; 它应该只是toggleClass("newclass")
。
另一个可能的错误(尽管它不会阻止您的代码执行某些操作)是您在所有.thisclass
元素上切换类,即使其中一个元素的内容为0
; 我不确定这是不是故意的,所以提出来。
最后,您可以像这样以较短的形式编写相同的代码:
// If you want to toggle class on an element-by-element basis
jQuery('.thisclass').filter(function() { return this.innerHTML == " 0 "; })
.toggleClass('.newclass');
// Or if you want to toggle on *all* elements if one matches:
var count = jQuery('.thisclass')
.filter(function() { return this.innerHTML == " 0 "; })
.length;
if(count) {
jQuery('.thisclass').toggleClass('.newclass');
}
我认为您必须修剪内部 html 内容以删除空的和不需要的尾随空格。
试试这个:
$(".thisclass").each(function() {
var thisHtml = $(this).html();
if (thisHtml.trim() == "0") {
$(".thisclass").toggleClass("newclass");
}
});
试试这个:
$(".thisClass").each(function(){
if ($(this).html() == " 0 ") {
$(this).toggleClass("newClass");
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.