Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery get元素包含具有特定html值的子元素_Jquery - Fatal编程技术网

Jquery get元素包含具有特定html值的子元素

Jquery get元素包含具有特定html值的子元素,jquery,Jquery,我想使用Jquery向“li”元素添加一个类,该元素包含一个html/val等于零的“span”元素 例如,如果我的代码如下所示: <ul> <li><span>Item 1</span><span class="num">30</span></li> <li><span>Item 2</span><span class="num">0</sp

我想使用Jquery向“li”元素添加一个类,该元素包含一个html/val等于零的“span”元素

例如,如果我的代码如下所示:

<ul>
    <li><span>Item 1</span><span class="num">30</span></li>
    <li><span>Item 2</span><span class="num">0</span></li>
    <li><span>Item 3</span><span class="num">20</span></li>
</ul>
然而,在这种情况下,这将导致:

<ul>
    <li class="disabled"><span>Item 1</span><span class="num">30</span></li>
    <li class="disabled"><span>Item 2</span><span class="num">0</span></li>
    <li class="disabled"><span>Item 3</span><span class="num">20</span></li>
</ul>
    第130项 第20项 第320项
这显然是行不通的。。。谢谢

试试:

$('li span.num').filter(
    function(i){
        return $(this).text() == '0';
    }).closest('li').addClass('selected');
.

试试这个

$('ul span.num').filter(function(){
    return $(this).text() == "0";
}).parent().addClass('disabled');

您可以将
元素与匹配,然后使用以下内容获取其父元素:


这应该是你想要的

$('li').each(function(){
    if( $(this).find('span.num').text() == '0' ) $(this).addClass('disabled')
});

我会提出以下建议:

<ul>
    <li><span>Item 1</span><span class="num">30</span></li>
    <li class="disabled"><span>Item 2</span><span class="num">0</span></li>
    <li><span>Item 3</span><span class="num">20</span></li>
</ul>
$('li').has('span.num:contains(0)').addClass('disabled')

但它不起作用,因为它会检查html中是否存在该值,而不是检查是否存在完全匹配的值。在本例中,每个span.num元素中都有一个0,因此每个li都将获得所选的类。似乎没有与:contains()选择器对应的:equals()。

这里有一个快速方法:

$('li .num').each(function(){
    if ( $(this).text() == '0') $(this).parent().addClass('disabled');
}); 

使用

为什么要添加选定类而不是禁用类??因为我们正在禁用项目,用户没有选择任何内容。这将不会生成OP所需的输出。为什么返回$(This)而不是true或false?@ShankarSangoli:oops。是的,你说得对。出于某种原因,我以为他想要30码。谢谢并编辑!=)在
span.num
之外的文本中添加
span
怎么样?您是指类似
项目1
的文本吗?提问者的标记中已经有
元素围绕这些元素。我是否遗漏了什么?我很感激使用.has和“contains”的附加注释。这正是我希望采取的方法。也许这是不可能的,但谁知道我将来可能需要这样的东西。我没有马上看这个,但它也很好用,所以+1。
filter
每个
用于两个不同的操作。当您希望根据任何条件筛选匹配的元素集时,可以使用
filter
,其中as
每个
用于循环遍历所有匹配的元素集并对其执行任何操作。在您的例子中,
filter
最适合,因为您希望筛选元素(text==0)并应用所需的类(disbaled)。事实证明,我实际上必须从不再为0的值中删除“disabled”类,因此。每个都是我的最佳选择。但考虑到我的问题中实际要求的内容,我明白了为什么过滤器是显而易见的选择。感谢您的回复和解释!
$('li').has('span.num:contains(0)').addClass('disabled')
$('li .num').each(function(){
    if ( $(this).text() == '0') $(this).parent().addClass('disabled');
});