类选择器不起作用

时间:2012-09-01 20:29:22

标签: jquery

我按类进行z-index管理..所以活动对象获得最顶层的类..

function topmost() {
    $(".topmost").removeClass("topmost");
    $("#thing").addClass("topmost");
}

此代码似乎无法正常工作,我无法理解为什么......

==编辑==

问题是$(".topmost").removeClass("topmost");在页面上有多个时发现零结果。我经常使用这个类选择器,从来没有遇到过这个问题。这个类首先是由jQuery添加的,但无论如何都应该看到它。我查看我的检查器并记录选择,当我看到至少3个div与该类时,它会出现零。它是一个嵌套在一个对象中的函数,是一个问题吗?它可以扩展到对象范围并搜索整个DOM吗?

6 个答案:

答案 0 :(得分:1)

如果我理解正确,你在dom加载后插入元素?如果是这样,您需要将事件委托给dom中存在的父元素。

$('body').on('click','div', function() {
    $('.topmost').removeClass();
    $(this).addClass('topmost');
});

body可以替换为dom ready上存在的最接近的父元素

最后一件事,总是将事件绑定包装在$(document).ready函数中,或者将脚本放在html代码的底部,以确保绑定时存在元素。

这是一个工作的例子

http://jsfiddle.net/MPT3z/

以下是将click事件应用于所有元素的方法

$('body').on('click','*', function() {
    $('.topmost').removeClass();
    $(this).addClass('topmost');
});

http://jsfiddle.net/eLDpn/

答案 1 :(得分:0)

试试这个

         $(document).on('click', '#SELECTOR', function(){
             $(".topmost").removeClass("topmost");
              $(this).addClass("topmost");
         });

在我放置#SELECTOR的地方,将其更改为您希望将其应用于

的任何元素

对象甚至可以去那里,假设已经正确定义以选择你想要的东西

答案 2 :(得分:0)

这很容易解决..给元素一个ID。并使用ID作为选择器。

function topmost() {
    $("#myDiv").removeClass("topmost");
    $("#myDiv").addClass("topmost");
}

答案 3 :(得分:0)

试试这个:

function topmost(el) {
    $(".topmost").removeClass("topmost");
    if ($(el).length > 0) {
       $(el).addClass("topmost");
    }
}

答案 4 :(得分:0)

如果将.each添加到选择器中,有时候调试更容易:

function topmost() {
  $(".topmost").each(function() {
    console.log("yo");
    $(this).removeClass("topmost");
  });
  $("#thing").addClass("topmost");
}

答案 5 :(得分:0)

调用此函数时页面上是否有回发?