委托/生活失败.不能在Prepending元素之后绑定事件
Delegate/Live Failure. Can't bind events after Prepending an element
EDIT——我意识到这里的问题是绑定到元素的点击处理程序必须在绑定另一个点击处理程序之前解除绑定。
我想允许用户通过单击所讨论的元素来选择/取消选择项。元素在"选项"框中开始,如果单击,则移动到"选定框"。如果在选定框中单击这些元素,这些元素就会移回原来的选项框。
不明白为什么delegate()和live()在这里不起作用。我认为这与prependTo()或appendTo()有关。
$('#amen_options .options p').click(function(e){
$(this).appendTo('#amen_selected .options');
e.stopPropagation();
e.preventDefault();
});
/*
$("body").delegate('#amen_selected p', 'click', function(e){
#(this).appendTo('#amen_options .options');
e.stopPropagation();
e.preventDefault();
});
*/
$('div#amen_selected div.options p').live('click',function(e){
$(this).appendTo('#amen_options .options');
e.stopPropagation();
e.preventDefault();
});
标记如下:
<div>
<div id="amen_options">
<h3>Click to Select</h3>
<div class="options">
<p data-option="">One</p>
<p data-option="">Two</p>
<p data-option="">Etc...</p>
</div>
</div>
<div id="amen_selected">
<h3>Selected</h3>
<div class="options">
</div>
</div>
第一次点击成功(将p个元素从选项发送到选定框)。但是,一旦选中,就不会绑定任何事件处理程序。firebug控制台没有显示错误。通常,我认为这是一个标记问题,但我已经反复检查过了。
谢谢!
看起来delegate()
运行良好。
$('body').delegate('#amen_options .options p', 'click', function(e) {
$(this).appendTo('#amen_selected .options');
return false;
});
$('body').delegate('#amen_selected .options p', 'click', function(e) {
$(this).appendTo('#amen_options .options');
return false;
});
相关文章:
- 如何使用Jquery水平打印表中的数组元素,并在某个元素之后垂直打印
- j查询 如何选择当前元素之后的下一个元素
- 如何在元素之后将模板片段添加到angular.js中的指令中
- 在动态创建html元素之后,是否可以触发事件
- querySelector位于特定元素之后
- 获取活动元素之后的下一个元素
- 如何在 d3.js 中的同级元素之后插入
- 动态嵌套列表:单击时插入行,在当前元素之后
- 紧跟在单击的元素之后显示一个元素
- jQuery选择器,用于查找与选择器匹配的给定元素之后的第一个元素
- XSL 在“N”个子元素之后展开和折叠
- 如何使用jQuery在具有类的特定元素之后插入HTML
- 在元素之后重置表单
- 如何在 {{#each}} 循环中的元素之间添加分隔符,最后一个元素之后除外
- 将子元素淡入父元素之后
- 影响某些元素的 jQuery 函数是否必须存在于代码中的元素之后
- 如何在第二个元素之后插入
- jQuery 在最后一个元素之后插入
- 隐藏单击的元素,并使用jQuery在元素之后立即显示该元素
- 使用jquery在dom的其余部分中查找特定元素之后的第一个匹配项