为什么这个选择器不起作用?

时间:2012-01-23 13:52:22

标签: jquery jquery-ui jquery-selectors

我想选择所有属于.view类的<div>内的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); 
    });

我拍了一张截图,所以你们可以看到J <div>内部确实存在JqueryUI按钮。 http://imgur.com/yDlw0

提前致谢。

修改

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

然后我尝试了一些我在处理异步请求时通常会做的事情(就是这里的情况??).. 将所有内容包装在一个setTimeout调用中,延迟时间为500毫秒..它工作正常。 < / p>

这有意义吗?

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:1)

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

作为一般规则,自定义JavaScript文件和脚本应放在收盘前的最底部</body>