2012-09-01 68 views
1

我被類做的z-index管理..所以活動對象獲取類最上面..類選擇不工作

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

此代碼似乎並不奏效,我可以」牛逼捉摸爲什麼..

== ==編輯

的問題是,$(".topmost").removeClass("topmost");是找到結果爲零時,有在頁面上幾個。我經常使用這個類選擇器,並且從來沒有遇到過這個問題。這個類首先被jQuery添加,但它應該可以看到它。我查看了我的檢查員並記錄了選擇內容,當我能夠看到至少3個帶有班級的div時,結果爲零。它是一個嵌套在對象中的函數,是一個問題嗎?它是否可以在對象外面搜索並搜索整個DOM?

+1

功能應該如何知道什麼是一個例子小提琴'object'是指?它在哪裏定義? –

+2

什麼是對象? –

+0

@DavidThomas聖潔的廢話,戴夫托馬斯 - 真棒的名字! –

回答

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/

+0

如果我想要它的任何有類的元素,而不只是一個div''*''? –

+0

哦,我剛剛使用'div'作爲通用持有者..您不需要'*'..只需替換類選擇器'.yourclass' –

+0

您能告訴我嗎?即時通訊不知道我明白..爲什麼不只是冷靜的類工作,你能解釋範圍問題在這裏,什麼jquery不是在做什麼? –

0

試試這個

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

這裏我把#SELECTOR,即更改爲您希望這適用於

對象甚至可以去那裏什麼元素,假設定義正確選擇您打算什麼

+0

你能解釋文檔包裝的需求嗎? –

0

這很容易解決..給元素一個ID。並使用該ID作爲選擇器。

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

試試這個:

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

有時更容易調試事情,如果你。每次添加到您的選擇:

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

是否有在頁面上出現一個回發時正在調用這個函數?

+0

什麼是回傳? –