我创建了一系列用于移动 Web 应用程序的自定义 jQuery 事件。它们工作得很好并且已经过测试。但是,我遇到了一个我无法理解的小问题。
我.clone()在 DOM 中的一些元素上使用,其中包含一个按钮。该按钮绑定了一些自定义事件(这些事件使用 绑定.on()),但是。不幸的是,当我使用 jQuery 时.clone(),绑定没有保留,我必须再次添加它们。
以前有没有人遇到过这种情况,有人知道可能的解决方法吗?我认为 using.on()应该保留现在或将来存在的元素的绑定?
我创建了一系列用于移动 Web 应用程序的自定义 jQuery 事件。它们工作得很好并且已经过测试。但是,我遇到了一个我无法理解的小问题。
我.clone()在 DOM 中的一些元素上使用,其中包含一个按钮。该按钮绑定了一些自定义事件(这些事件使用 绑定.on()),但是。不幸的是,当我使用 jQuery 时.clone(),绑定没有保留,我必须再次添加它们。
以前有没有人遇到过这种情况,有人知道可能的解决方法吗?我认为 using.on()应该保留现在或将来存在的元素的绑定?
我认为你应该使用.clone()方法的这个重载:
$element.clone(true, true);
克隆( [withDataAndEvents] [, deepWithDataAndEvents] )
withDataAndEvents:一个布尔值,指示事件处理程序和数据是否应与元素一起复制。默认值为假。
deepWithDataAndEvents:一个布尔值,指示是否应复制克隆元素的所有子项的事件处理程序和数据。默认情况下,它的值与第一个参数的值匹配(默认为 false)。
请注意,.on()这实际上并未将事件绑定到目标,而是绑定到您委托给的元素。所以如果你有:
$('#container').on('click', '.button', ...);
这些事件实际上绑定到#container. 当点击一个.button元素时,它会冒泡到#container元素触发事件的元素根据选择器参数进行评估.on(),如果匹配,则执行事件处理程序。这就是事件委托的工作方式。
如果您克隆元素#container,则必须使用.on()要保留的绑定的事件和数据进行深度克隆。
如果您.on()在#container.