我正在轉換我們在門戶(Liferay)中使用的舊jQuery 1.2.6版代碼。之前,我們使用livequery插件將事件添加到動態添加的DOM對象。這現在是jQuery(on()函數)內置的一個功能。我有這個想法。使用jQuery修改負載上的動態添加元素
然而,也有在的liveQuery,使我們能夠修改負載這些動態加載的對象的特徵(即不依賴於某些事件):
$(".myTextBox").livequery(function() { $(this).val("initial value"); });
我不控制代碼時的AJAX的portlet在我們的門戶中加載,所以我不能在創建時修改內容。
我試過幾件事情無濟於事。這是我認爲會起作用的那個,但沒有。我將jQuery添加到我的portlet中,以便將它加載到portlet HTML的底部,並將jQuery添加到文件中。
<footer-portlet-javascript>myscript.js</footer-portlet-javascript>
...
$(document).ready(function() {
$(".myTextBox").val("initial value");
});
這是行不通的。如果我編寫了一個警報($(「。myTextBox」)),它顯示一個對象,但alert($(「。myTextBox」).val())未定義。
有關我如何工作的任何想法?
我想在加載時更改這些項目,而不是將它們與事件綁定。我已經做到了。你在哪裏放置AUI()。ready函數?那可以放在一個portlet的JS中嗎?我試圖避免把JS放在主題中。 – acvcu
瞭解,我意識到,我發佈後,但'allPortletsReady'事件應該給你你需要的。是的,您可以在Portlet的JS中放置AUI()。ready函數。你可以根據需要在AUI()。ready()塊內使用jQuery。我的例子使用AUI .one()來選擇元素,但是可以用$(「#mySelector」)。val('initial value')替換你的情況。 – Barryrowe
在頁面加載時起作用,但如果刷新Portlet或將Portlet添加到頁面,則不會觸及該JS。我正在使用異步加載的ajax portlet - 並非全部都是。有任何想法嗎? – acvcu