使用此語法代替,委派事件處理程序類,現在和將來的所有成員:
$('parent').on('click', 'a.btn.btn-warning.xcrud-action', function() {
intvId = window.setInterval(cleanup, 200);
});
凡父是一個元素上漲在DOM樹中,而不是您要定位的a
元素。 (我假設這個選擇器中的示例中的所有類都適用於單個a
元素。)該語法取代了較早的delegate
方法。
問題是,您正在將處理程序附加到不會來來去去的元素(不管DOM多麼易變,如果必須的話,您總是可以使用document
),並應用一個過濾器(以選擇器的形式)到元素,只將處理程序應用於所需的包含元素的類型。正如doc所述:
委託事件的優點是它們可以處理來自稍後添加到文檔中的後代元素的事件。通過選擇在委託事件處理程序附加時保證存在的元素,可以使用委派事件來避免頻繁附加和刪除事件處理程序的需要。
不幸的是,美國商務部也沒有拼出了[selector]
參數的on
方法委託處理程序,以在選擇的類成員。您可以通過查看較早的delegate
文檔並查看他們將從delegate
轉換爲on
的示例來查找。
這裏有一個小的工作例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>
Test
</title>
<!--jQuery and jQuery-UI files-->
<script src="includes/jquery/jquery-2.2.3.js"></script>
<script src="includes/jquery-ui/external/jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('form').on('click', 'button.test1.test2', function(e, ui){
$('form').append('<button type="button" class="test1 test2">"Test"</button>')
alert('click');
});
});
</script>
</head>
<body>
<form>
<button type="button" class="test1 test2">Test</button>
</form>
</body>
</html>
任何新的按鈕將具有相同的行爲與原。
您是否有被刪除並重新插入的標記代碼? – mhatch