1

如果元素的内部 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/

4

6 回答 6

3

这应该可以解决问题:

$(".thisclass").each(function() {
    if($(this).html() == "0") {
        $(this).removeClass("thisclass");
        $(this).addClass("thatclass");
    }
});
于 2012-04-18T15:00:55.273 回答
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 是否有效。

于 2012-04-18T14:58:28.620 回答
0

我认为您必须修剪内部 html 内容以删除空的和不需要的尾随空格。

尝试这个:

$(".thisclass").each(function() {
    var thisHtml = $(this).html();
    if (thisHtml.trim() == "0") {
        $(".thisclass").toggleClass("newclass");
    }        
});

通过示例链接到 jsFiddle

于 2012-04-18T15:13:11.120 回答
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');
}
于 2012-04-18T15:12:36.263 回答
0

这条线有问题:

jQuery('.thisclass').toggleClass('.newclass');

您需要在此处使用当前元素。此外,当您执行 addClass/removeClass/toggleClass 时,您不需要在类名中使用点(“.”)。会是这样的。

myElement[i].toggleClass('newclass');
于 2012-04-18T14:59:20.110 回答
-1

尝试这个:

$(".thisClass").each(function(){
    if ($(this).html() == " 0 ") {
        $(this).toggleClass("newClass");
    }
});
于 2012-04-18T14:58:45.357 回答