2011-03-09 68 views
0

我在頁面加載時有以下javascript。將jQuery live()應用到動態生成的元素

$(document).ready(function() 
{ 
    $('.rounded').corner(); 
}); 

這是一個簡單的jQuery插件,可以圍繞DIV s的角落。

但我也有一些動態加載的DIV在我的頁面上沒有應用圓角。我意識到我應該使用live()livequery()函數,但我將如何應用這個?

+1

如果您通過ajax添加div,您可以使用'$('。rounded')。corner(); '成功':' – Rafay 2011-03-09 04:44:30

回答

0

你爲什麼不嘗試

$(div).corner(); 

在它們產生的那一刻。

+0

這意味着我必須在每次生成正確的時候添加$(div).corner()?我希望將這些代碼放在一個地方。 – ericbae 2011-03-09 04:36:34

+0

@ebae是的,你必須在事件生成後註冊事件。如果您在頁面生成之前定義了事件,那麼這將不起作用。 – 2011-03-09 04:38:38

+0

你想要的是'bind()' – philwinkle 2011-03-09 04:45:59

1

你真正想要的是jQuery bind()方法。你必須更新你的代碼,它實際上附加了div - 但不足之處在於你必須在添加時調用trigger(youreventcustomname)

這裏是爲您的使用情況的一個例子:

$(function(){ 

    // the bind call 
    $('.rounded').bind('divbox',function(){ 
    $(this).corner(); 
    }); 

    //the dom add 
    $('html').append('<div></div>').addClass('rounded').trigger('divbox'); 
}); 

一些更多閱讀:

http://api.jquery.com/bind/

http://ejohn.org/apps/workshop/adv-talk/#14

+0

肯定會工作嗎? – 2011-03-09 04:48:28

+0

它的工作原理 - http://jsfiddle.net/philwinkle/qhMvw/ – philwinkle 2011-03-09 04:54:52

+0

不完全是,他的問題是元素被其他jquery調用動態地加載到頁面上。使用.bind僅將事件綁定到頁面上的* *目錄*,而不是與選擇器匹配的未來元素。您必須使用.live將其附加到未來的元素。但是我認爲,如果你的解決方案與.live改變綁定,你的解決方案將會起作用。 – nzifnab 2011-03-09 07:05:42

0

嘗試,這可能是它會幫助

$('.rounded').livequery(function(){ 
     $(this).corner(); 
    }); 
相關問題