【问题标题】:Why doesn't this selector work?为什么这个选择器不起作用?
【发布时间】:2012-01-23 13:52:22
【问题描述】:

我想选择所有位于 .view 类的 <div>s 中的所有 jquery UI 按钮。考虑到这一点,我编写了以下代码,但没有一个能满足我的要求。

我想要的是,就像我说的,返回类为 .ui-button 的所有元素,这些元素位于类为 .view 的元素中。

    $(".view").find('.ui-button').each(function(index){
        console.log(index);
    })

    $(".view .ui-button").each(function(index){
        console.log(index);
    })

    $(".view > .ui-button").each(function(index){
        console.log(index); 
    });

我已经截取了屏幕截图,因此你们可以看到<div> 中确实存在 JqueryUI 按钮。 http://imgur.com/yDlw0

提前致谢。

编辑

我已经尝试在关闭标签之前将脚本的包含推送到最后一件事..仍然没有...

然后我尝试了一些我在处理异步请求时通常会做的事情(这里是这种情况吗??).. 将所有内容都包装在一个延迟 500 毫秒的 setTimeout 调用中。它奏效了。

这有意义吗?

【问题讨论】:

  • "...没有一个能满足我的要求。"您能更具体地说明您的期望吗?选择器对我来说看起来不错。
  • 在一个简化的例子中工作:jsfiddle.net/G7eRX
  • 我明白了。知道为什么它对我不起作用吗?
  • 难道 jQuery 会将该类添加到按钮之后您的选择器正在运行?
  • 当我以 500 毫秒延迟将所有调用包装在 setTimeout 中时,它起作用了.....WTF

标签: jquery jquery-ui jquery-selectors


【解决方案1】:

我怀疑这是因为您正在调用 jQueryUI 函数 button(),它在选择器运行后将类 ui-button 添加到元素中。

参见this 示例,这表明这至少是可行的。

因此,解决方案是确保在尝试使用ui-button 类进行操作之前调用button,或使用其他类来识别您尝试选择的元素。第二点很重要;您必须已经在这些元素上有另一个类,才能选择它们以应用 button() 函数。

【讨论】:

  • 已经将脚本包含推到
【解决方案2】:

您的脚本何时运行?很可能您已在 jQueryUI 库之前包含它,这会导致您在添加类之前搜索它们。

作为一般规则,自定义 JavaScript 文件和脚本应该放在最底部,就在结束 </body> 之前

【讨论】:

  • 具体来说,只有可延迟的脚本应该放在</body>
猜你喜欢
  • 2013-07-31
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 2014-03-07
  • 2011-06-30
  • 2017-11-11
相关资源
最近更新 更多