gpt4 book ai didi

Jquery:为什么我的 'find()' 方法没有更新?

转载 作者:行者123 更新时间:2023-12-01 07:24:31 24 4
gpt4 key购买 nike

我有一个函数来查找查找类的长度,但它不起作用总是返回长度为“0”;

我的代码有问题:任何人都可以建议我正确的方法吗?但我需要使用相同结构的代码风格来实现这一点。

查看我的代码:

<div id='list'>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
<p></p>
</div>​

function callMe(params){
$(params.list).click(function(){
$(this).addClass('c_on');
var length = $(params.list).find('.c_on').length;
$('p').text(length)// return always 0, even i clicked no.of list.
})
}

$(document).ready(function(){
var obj = {
list : $('ul').find('li')
}
callMe(obj);
})

style :

li.c_on{
border:1px solid green;
}

​​这是 fiddle :http://jsfiddle.net/AeGvf/1/

最佳答案

您正在使用 find :

Get the descendants of each element in the current set of matched elements, filtered by a selector, jQuery object, or element.

什么时候你应该使用 filter :

Reduce the set of matched elements to those that match the selector or pass the function's test.

请注意find适用于后代,而filter对元素本身起作用。您有一个列表 <li>没有任何后代,所以 find正在搜索一个空集。你应该这样做:

var length = $(params.list).filter('.c_on').length;

还有,你的params.list已经是一个 jQuery 对象,所以你不需要 $(params.list) ,您可以使用params.list直接:

function callMe(params){
params.list.click(function(){
$(this).addClass('c_on');
var length = params.list.filter('.c_on').length;
$('p').text(length);
});
}

演示:http://jsfiddle.net/ambiguous/uCGaY/

关于Jquery:为什么我的 'find()' 方法没有更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10459436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com