繁体   English   中英

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

[英]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");
    }        
});

使用示例链接到 jsFiddle

试试这个:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM