2013-03-25 95 views
0

我有一個jQuery的問題。說我有2周的div jQuery中,jquery與動態div綁定

<div id='1'>    //static div 
</div> 

<div id='2'>    //dynamic div 
</div> 

靜態的div總是存在的文件,但是當我們點擊了固定的div動態DIV切換。現在我想要在動態div上放置一個事件,如:

$(document).on("show", "#2", {}, function() { 
alert("div 2 present"); 
}); 

這樣我就可以在文檔中出現動態div時做些什麼。我怎樣才能做到這一點 ?

回答

3

當元素變得可見時,沒有「顯示」事件觸發。您必須將處理程序綁定到導致元素首先可見的事件。在這種情況下,這似乎是在第一個div單擊事件:

$(document).on("click", "#1", function() { 
    $("#2").toggle(); 

    if ($("#2").is(":visible")) { 
     alert("div 2 present"); 
    } 
}); 

注意,根據HTML 4規範,元素ID不應該以數字開頭。但是,在HTML 5中這是正常的。

需要注意的進一步改進是,將處理程序綁定到動態生成的元素時,最好定位最近的靜態父元素,而不是允許在document級別處理委派;即做$("#parent").on("click", element, function() {})

最後,由於<div id="1">是靜態的,你並不需要一個委託的事件處理程序,可以將處理器直接綁定:

$("#1").click(function() { 
    //... 
}); 
+0

+1引用HTML規範! – daniel0mullins 2013-03-25 19:03:19

+0

[HTML5](http://www.w3.org/html/wg/drafts/html/master/dom.html#the-id-attribute)規範並不那麼嚴格 - 「所有值必須是唯一的元素的主子樹中的ID必須包含至少一個字符。該值不得包含任何空格字符。「# – 2013-03-25 19:05:54

+0

@wirey謝謝你指出。我想我特指[HTML <= 4](http://www.w3.org/TR/html4/types.html#type-id):* ID標記必須以字母([A- Za-z]),後面跟着任意數量的字母,數字([0-9]),連字符(「 - 」),下劃線(「_」),冒號(「:」)和句點(「。 「)。* 更新。 – nbrooks 2013-03-25 19:10:30