1

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

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

这段代码似乎不起作用,我无法理解为什么..

== 编辑 ==

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

4

6 回答 6

1

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

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

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

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

这是它工作的示例小提琴

http://jsfiddle.net/MPT3z/

以下是如何将点击事件应用于所有元素

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

http://jsfiddle.net/eLDpn/

于 2012-09-05T20:53:44.860 回答
0

试试这个

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

我在哪里放置 #SELECTOR ,将其更改为您希望它适用的任何元素

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

于 2012-09-01T20:35:39.783 回答
0

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

function topmost() {
    $("#myDiv").removeClass("topmost");
    $("#myDiv").addClass("topmost");
}
于 2012-09-01T20:58:00.640 回答
0

试试这个:

function topmost(el) {
    $(".topmost").removeClass("topmost");
    if ($(el).length > 0) {
       $(el).addClass("topmost");
    }
}
于 2012-09-01T21:00:25.283 回答
0

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

function topmost() {
  $(".topmost").each(function() {
    console.log("yo");
    $(this).removeClass("topmost");
  });
  $("#thing").addClass("topmost");
}
于 2012-09-01T21:56:33.770 回答
0

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

于 2012-09-04T22:27:32.000 回答