2012-02-20 66 views
0

我有登錄一個jquery,雖然頁面的其餘部分變淡打開中間一個新的div調用。它的工作原理,如果我用一個錨標記與類=「登錄窗口」和jQuery的使用選擇它:登錄DIV從一個錨標記

$('a.login-window').click(function() { 
}); 

但是當我移動錨標記成一個div那我填用ajax在運行時:

<div id="nav"> 
    <ul class="dropdown dropdown-horizontal"> 
    <li><a href="#login-box" class="login-window">Log In</a></li> 
    </ul> 
</div> 

我該如何從列表中工作?

回答

2

在頁面加載將無法正常工作之後添加的任何DOM元素,你需要使用.on()這將檢查之後使用JavaScript和應用任何的jQuery給他們添加的元素。

$("body").on("click", "p", function(){ 
    // 
}); 

編輯:或者delegate(),如果你有使用舊的jQuery。

+2

使用'.on()'而不是'.live()'。 – MacMac 2012-02-20 15:13:46

+0

他是正確的'活()'是折舊,請參閱http://api.jquery.com/live/ – ntziolis 2012-02-20 15:15:37

+0

謝謝,編輯。不知道live()是否被棄用。 – 472084 2012-02-20 15:16:09

0

就在昨天,詳細回答了這個同樣的問題:jQuery selector doesn't update after dynamically adding new elements

答案是使用.on().delegate()(取決於您擁有哪個jQuery版本),因此您可以使用委託事件處理而不是直接元素事件處理。

在你的情況下,如果#nav對象是所有這些環節的父母,那麼你可以使用這個:

$('#nav').on('click', 'a.login-window', function() { 
    // your code here 
}); 

如果#nav是不是所有的鏈接的父母,那麼你需要找到在jQuery對象中使用一些常見的父項。來自所有動態創建的對象的事件將冒泡到共同的父對象,並在那裏被過濾和處理。