我在頁面加載時有以下javascript。將jQuery live()應用到動態生成的元素
$(document).ready(function()
{
$('.rounded').corner();
});
這是一個簡單的jQuery插件,可以圍繞DIV
s的角落。
但我也有一些動態加載的DIV在我的頁面上沒有應用圓角。我意識到我應該使用live()
或livequery()
函數,但我將如何應用這個?
我在頁面加載時有以下javascript。將jQuery live()應用到動態生成的元素
$(document).ready(function()
{
$('.rounded').corner();
});
這是一個簡單的jQuery插件,可以圍繞DIV
s的角落。
但我也有一些動態加載的DIV在我的頁面上沒有應用圓角。我意識到我應該使用live()
或livequery()
函數,但我將如何應用這個?
你爲什麼不嘗試
$(div).corner();
在它們產生的那一刻。
這意味着我必須在每次生成正確的時候添加$(div).corner()?我希望將這些代碼放在一個地方。 – ericbae 2011-03-09 04:36:34
@ebae是的,你必須在事件生成後註冊事件。如果您在頁面生成之前定義了事件,那麼這將不起作用。 – 2011-03-09 04:38:38
你想要的是'bind()' – philwinkle 2011-03-09 04:45:59
你真正想要的是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');
});
一些更多閱讀:
肯定會工作嗎? – 2011-03-09 04:48:28
它的工作原理 - http://jsfiddle.net/philwinkle/qhMvw/ – philwinkle 2011-03-09 04:54:52
不完全是,他的問題是元素被其他jquery調用動態地加載到頁面上。使用.bind僅將事件綁定到頁面上的* *目錄*,而不是與選擇器匹配的未來元素。您必須使用.live將其附加到未來的元素。但是我認爲,如果你的解決方案與.live改變綁定,你的解決方案將會起作用。 – nzifnab 2011-03-09 07:05:42
嘗試,這可能是它會幫助
$('.rounded').livequery(function(){
$(this).corner();
});
如果您通過ajax添加div,您可以使用'$('。rounded')。corner(); '成功':' – Rafay 2011-03-09 04:44:30