使用 jQuery .find() 结果作为链中回调函数的参数
我有这个问题(现在是吗?):
让我们使用这个 HTML:
<div>
<p></p>
<p id="bar"></p>
</div>
<div>
<p id="foo"></p>
<p id="baz"></p>
</div>
简单。
在 jQuery 中,我们向所有 div 添加了函数(例如“单击”):
$('div').click(function(){
$(this).doSomething($(this))
.find('#baz')
.doSomethingWithCallback ({args}, callbackFunction($FIND_RESULT) );
});
显然,变量 $FIND_RESULT 不存在 – 我想知道如何获得最后一个 .find() 查询的结果?< /strong>
有什么办法吗,或者我必须打破我的疯狂链条(或重复 $(this).find() 作为参数)?
编辑:IRL示例:
function hide($div) { $div.css({'display': 'none'});
function ...
$(this)
.anyFunction()
.find('.foo')
.animate({opacity: 0}, 250, hide(^that^));
}
I have this problem (is it now?):
Let's have this HTML:
<div>
<p></p>
<p id="bar"></p>
</div>
<div>
<p id="foo"></p>
<p id="baz"></p>
</div>
simple.
In jQuery, we have function (e.g. 'click') added to all divs:
$('div').click(function(){
$(this).doSomething($(this))
.find('#baz')
.doSomethingWithCallback ({args}, callbackFunction($FIND_RESULT) );
});
Obviously, variable $FIND_RESULT doesn't exist – I would like to know how can I get to result of last .find() query?
Is there any way, or do I have to break my mad chain (or repeat $(this).find() as argument)?
Edit: IRL example:
function hide($div) { $div.css({'display': 'none'});
function ...
$(this)
.anyFunction()
.find('.foo')
.animate({opacity: 0}, 250, hide(^that^));
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
一般来说,对于 jQuery 函数,每次匹配 find() 时,你的 doSomethingWithCallback 都会被执行多次,因此每次匹配你的回调方法也会被调用一次,所以传递元素集是不必要的,使用 $(this) 。
Generally with jQuery functions, your doSomethingWithCallback will be executed multiple times one for each match of find(), and therefore your callback method will be called one time for each match too, so passing the set of elements is innecesary, use $(this).
我也有点困惑。 .find() 方法非常强大,所有其他 jQuery 函数也是如此。每个函数都在一组元素上执行,然后将这些元素传回,以便其他函数可以链接它们。 http://jsfiddle.net/rkw79/DXbXU/
在您的自定义函数上,您是否返回对象处理完之后? http://docs.jquery.com/Plugins/Authoring#Maintaining_Chainability
I'm a bit confused also. The .find() method is extremely robust, so are all the other jQuery functions. Each one executes on a group of elements and then passes those elements back so that other functions can chain on them. http://jsfiddle.net/rkw79/DXbXU/
On your custom function, are you returning the objects after you process them? http://docs.jquery.com/Plugins/Authoring#Maintaining_Chainability
您是否在寻找 jQuery 的
end()
?
如果您要制作自己的插件,请查看
pushSack()
和end()
Are you looking for jQuery's
end()
?
If you're making you own plugins then take a look at
pushSack()
andend()