考慮以下幾點:JQuery的:動態地創建事件綁定最好的辦法元素
var template = '<div class="dynamic">Some markup</div>'
, $template = $(template);
$template.on('click.namespace.data-api', function(e) { doStuff() });
$('div.#parent').append($template);
對我來說,這似乎是綁定一個事件到節點的最優化的方式,因爲該事件被連接到一個已經作爲jQuery對象引入的節點。但是,我不確定這是如何在實際點擊事件中發揮作用的;點擊,是jQuery能夠立即找到這個元素,因爲事件綁定到一個jQuery對象?或者是更優化的情況下使用類似綁定:
var template = '<div class="dynamic">Some markup</div>'
, $template = $(template);
$('div.#parent').append($template);
$('div.#parent').on('click.namespace.data-api', 'div.dynamic', function(e) { doStuff() });
我想我不明白你在問什麼,因爲這些代碼片段做不同的事情。首先是創建一個新元素並將其添加到頁面中,而第二個元素不會。這些還將點擊處理程序添加到不同的元素(儘管推測可能具有相同的觀察效果?)。我不清楚你在比較兩者之間的原因或原因。 – David
在這種情況下,jQuery支持通過'.on()'將綁定點擊事件偵聽器添加到文檔片段(這是您的$ template'),即使它沒有被注入到DOM中:https://github.com/jquery /api.jquery.com/issues/548 – Terry
@大衛,我已經更新了清晰。在第二個示例中,我將處理程序添加到偵聽'div.dynamic'子節點上的點擊的父節點上。 –