如果元素的内部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/
答案 0 :(得分:3)
这应该可以解决问题:
$(".thisclass").each(function() {
if($(this).html() == "0") {
$(this).removeClass("thisclass");
$(this).addClass("thatclass");
}
});
答案 1 :(得分:1)
也许删除零周围的空格会有帮助吗?
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是否有效。
答案 2 :(得分:0)
这一行是个问题:
jQuery('.thisclass').toggleClass('.newclass');
您需要在此处使用当前元素。 另外,当你执行addClass / removeClass / toggleClass时,你不需要在类名中使用点(“。”)。 会是这样的。
myElement[i].toggleClass('newclass');
答案 3 :(得分:0)
问题很可能是你的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');
}
答案 4 :(得分:0)
我认为您必须修剪内部html内容以删除空的和不需要的尾随空格。
试试这个:
$(".thisclass").each(function() {
var thisHtml = $(this).html();
if (thisHtml.trim() == "0") {
$(".thisclass").toggleClass("newclass");
}
});
答案 5 :(得分:-1)
试试这个:
$(".thisClass").each(function(){
if ($(this).html() == " 0 ") {
$(this).toggleClass("newClass");
}
});