我有这个问题(现在是吗?):
我们有这个HTML:
<div>
<p></p>
<p id="bar"></p>
</div>
<div>
<p id="foo"></p>
<p id="baz"></p>
</div>
简单。
在jQuery中,我们将函数(例如“click”)添加到所有div:
$('div').click(function(){
$(this).doSomething($(this))
.find('#baz')
.doSomethingWithCallback ({args}, callbackFunction($FIND_RESULT) );
});
显然,变量$ FIND_RESULT不存在 - 我想知道如何获得最后一次.find()查询的结果?
有什么办法,或者我是否必须打破我的疯狂链(或重复$(this).find()作为参数)?
修改:IRL示例:
function hide($div) { $div.css({'display': 'none'});
function ...
$(this)
.anyFunction()
.find('.foo')
.animate({opacity: 0}, 250, hide(^that^));
}
答案 0 :(得分:1)
通常使用jQuery函数,对于find()的每个匹配,doSomethingWithCallback将被执行多次,因此每次匹配也会调用一次回调方法,因此传递元素集是必要的,使用$ (本)。
答案 1 :(得分:0)
我也有点困惑。 .find()方法非常健壮,所有其他jQuery函数也是如此。每个元素都在一组元素上执行,然后将这些元素传递回来,以便其他函数可以在它们上链接。 http://jsfiddle.net/rkw79/DXbXU/
在自定义函数上,处理它们后是否返回对象? http://docs.jquery.com/Plugins/Authoring#Maintaining_Chainability
答案 2 :(得分:0)
你在寻找jQuery的
end()
如果你自己制作插件,请查看pushSack()
和end()
function ...
$(this)
.anyFunction()
.find('.foo')
.end() // <---
.animate({opacity: 0}, 250, hide(^that^));
}