0
我旁邊HTML結構:如何檢測DOM準備和所有屬性設置
<div id="controls">
<div class="action" data-action="controller/action1" data-view="view1">...</div>
<div class="action" data-action="controller/action1" data-view="view2">...</div>
<div class="action" data-action="controller/action2" data-view="view1">...</div>
<div class="action" data-action="controller/action2" data-view="view2">...</div>
...e.t.c.
</div>
在打字稿我試圖讓數據的屬性和構建Ajax查詢:
$('#controls').off('click').on('click','.action',(e) => {
var $element = $(e.target),
action = $element.data('action'),
view = $element.data('view');
if(!action)
return this.sendNotification(false,'Setup action in config');
if(!view)
return this.sendNotification(false,'Setup view in config');
// Ajax request and other logic
});
我也有功能頁面的那部分更新(包括話題開始的div塊)
private updateActionsBlock() {
$.get(location.href, (html) => {
$('#controls').html($(html).find('#controls'));
this.init();
});
}
PR OBLEM
如果用戶與互聯網連接或慢電腦出了問題(可能是瀏覽器有沒有足夠的RAM) - 使用updateActionBlock()
從$('.action')
幾秒鐘不可能得到的數據屬性之後。這些變得不確定。
問題
我怎麼能禁用前DOM準備點擊$('.action');
?
我希望它是可以做到不setTimeout
要麼在document.ready激發之後運行'updateActionsBlock()',要麼隱藏這些元素並將它們淡入到document.ready中。我不明白這實際上是你的問題,因爲委託事件應該在AJAX請求完成之前綁定* long * –
不幸的是,在每個由'.action'點擊處理的ajax請求之後,我需要使用'updateActionBlock'。 'document.ready','document.DOMContentLoaded'只能在頁面初始化中使用 –
好的,但我的意思是委託的事件處理程序已經綁定了,所以沒有事件被觸發的情況下單元可以被點擊。 –