我有一个情况,我在网站的特定部分中使用名称为data-command
的data
属性,并且我决定不绑定大量单独的点击事件,而是使用一个开关,如下所示:
$('[data-command]').on('click', function(event) {
// Prevent default click action
event.preventDefault();
// Get command
var command = $(event.target).data('command');
switch (command) {
// Do stuff...
}
// Prevent default click action (IE 8)
return false;
});
然而,当尝试在通过AJAX加载的数据上运行时,它成为了一个问题。
这显然是有效的。
$('#existing_element').on('click', '[data-command]', function(event) {
但是由于它应该在该网站部分的许多不同页面上运行,因此上述方法并不适用于所有页面。
我可以确保给加载所有ajax数据的父容器提供特定的id
,但这意味着需要使用大量相同的代码创建两个单独的绑定事件。
我也可以这样做来覆盖所有情况..
$(document).on('click', '[data-command]', function(event) {
...但将元素绑定到文档可能不是一个明智的想法。
编辑:通过jQuery的html
方法将HTML数据加载到DOM
中。
有没有一种简洁的方式来处理这个问题,或者我应该创建两个不同的绑定事件来处理每种情况?
$('<parent_wrapper_selector>').on('click', '[data-command]', function(event) {…})
- gfullam