2010-02-11 57 views
2

有沒有辦法讓以下聲明持久化爲所有以後添加到DOM的匹配元素?虛構的jQuery持久化方法

$("a.my-class").replaceWith("<span>Replaced</span>"); 

東西線沿線的...

$("a.my-class").persist().replaceWith("<span>Replaced</span>"); 

(堅持是一個虛構的方法,我希望傳達我想完成什麼。)

+0

仍不能確定我完全理解。如果(在理論上)持續存在以你描述的方式存在,那麼你的第二個電話會清空它! –

+0

所以你寧願我說這樣? (「。my-class」)。persist(function(){$(this).replaceWith(「 Replacement」)}); – jerome

回答

0

jQuery中的live()方法做類似的事情,但它是爲了事件。

你可能使用活的()和負載情況下,實現你在找什麼,像(未經測試):

$("a.my-class").live('load',function(){ 
    $(this).replaceWith("<span>Replaced</span>"); 
}); 
+0

沒有頁面重新加載以基於事件。 DOM元素正在通過AJAX添加。 – jerome

+0

上面給通過AJAX('a.my-class')添加的元素添加了一個加載事件加載,而不是頁面加載。正如我所說,它沒有經過測試。 – Fermin

1

沒有一種方法完全像你想要什麼,但如果內容正在使用jQuery AJAX方法添加,您可以使用此:

$("<div></div>").ajaxSuccess(function(){ 
    $("a.my-class").replaceWith("<span>Replaced</span>"); 
}); 

而且此代碼後就會運行每成功的AJAX請求,提供的請求是使用jQuery的$.ajax呼叫作出(inclu ding $.post$.get)。你只需要在頁面上調用一次,它會在任何AJAX調用時觸發。

如果用替換髮生得太快了遇到麻煩:

$("<div></div>").ajaxSuccess(function(){ 
    window.setTimeout(function(){ 
     $("a.my-class").replaceWith("<span>Replaced</span>"); 
    }, 250); 
});