使用 jQuery .find() 结果作为链中回调函数的参数

发布于 2024-11-27 18:56:03 字数 846 浏览 0 评论 0原文

我有这个问题(现在是吗​​?):

让我们使用这个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

笑脸一如从前 2024-12-04 18:56:03

一般来说,对于 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).

反话 2024-12-04 18:56:03

我也有点困惑。 .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

饭团 2024-12-04 18:56:03

您是否在寻找 jQuery 的

end()

?

如果您要制作自己的插件,请查看 pushSack()end()

function ...
  $(this)
    .anyFunction()
  .find('.foo')
  .end()  // <---
    .animate({opacity: 0}, 250, hide(^that^));
 }

Are you looking for jQuery's

end()

?

If you're making you own plugins then take a look at pushSack() and end()

function ...
  $(this)
    .anyFunction()
  .find('.foo')
  .end()  // <---
    .animate({opacity: 0}, 250, hide(^that^));
 }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文