jQuery条件基于元素的内部HTML内容

时间:2012-04-18 14:55:17

标签: javascript jquery conditional

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

6 个答案:

答案 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");
    }        
});

Link to jsFiddle with example

答案 5 :(得分:-1)

试试这个:

$(".thisClass").each(function(){
    if ($(this).html() == " 0 ") {
        $(this).toggleClass("newClass");
    }
});