jQuery 单击事件在追加新按钮时未触发
jQuery click event not firing when appending new button
当我单击"显示"按钮时,将调用显示侦听器并显示一个新的隐藏按钮。但是为什么当我单击"隐藏"时没有调用隐藏按钮?
$('.myCss').append('<input type="button" class="show" value="Show"/>');
$('.show').on('click', function () {
console.log('show clicked');
$('.myCss').append('<input type="button" class="hide" value="Hide"/>');
});
$('.hide').on('click', function () {
console.log('hide clicked');
$('.myCss').append('<input type="button" class="show" value="Show"/>');
});
它与添加到页面的元素的顺序有关。如果你把隐藏代码放在显示代码中,它可以工作(尽管你应该检查你的逻辑):
$('.show').on('click', function() {
console.log('show clicked');
$('.myCss').append('<input type="button" class="hide" value="Hide"/>');
$('.hide').on('click', function() {
console.log('hide clicked');
$('.myCss').append('<input type="button" class="show" value="Show"/>');
});
});
js小提琴示例
在原始代码中,将单击事件绑定到隐藏按钮的代码存在于实际隐藏按钮之前,因此它实际上并未绑定到任何内容。通过在另一个代码块中移动它,可以延迟该块的执行。您也可以使用 .on()
将 click 事件绑定到 DOM 中更高级别的事件,但它实际上基本上是相同的最终结果。
从文档中:
事件处理程序仅绑定到当前选定的元素;它们 代码调用 .on() 时必须存在于页面上。 要确保元素存在且可以选择,请执行事件 在文档就绪处理程序内绑定,用于 页面上的 HTML 标记。如果将新的 HTML 注入到页面中, 选择元素并在新 HTML 之后附加事件处理程序 放置在页面中。或者,使用委托事件附加事件 处理程序,如下所述。
因为当您设置事件时,.hide 元素不存在。您可以尝试设置以下事件:
$('.myCss').append('<input type="button" class="show" value="Show"/>');
$('.myCss').on('click', '.show', function () {
console.log('show clicked');
$('.myCss').append('<input type="button" class="hide" value="Hide"/>');
});
$('.myCss').on('click', '.hide', function () {
console.log('hide clicked');
$('.myCss').append('<input type="button" class="show" value="Show"/>');
});
这会将单击附加到 .myCss 元素(shich 始终存在),但仅在其中的 .hide 元素上触发单击时
触发函数。此解决方案比每次创建元素时创建事件更有效。
问题是当您尝试在其上定义 OnClick 事件时,"隐藏"按钮不存在。我建议您添加它,设置 display=none,然后显示它
创建".hide"事件处理程序时,"隐藏"按钮尚不存在。
可以在创建元素后设置事件处理程序、使用事件冒泡或使用 .live。
有几个人正确地回答了隐藏按钮是在事件绑定到控件之后创建的。我建议采用一种不同的方法,即在更高级别(在我的示例中为文档)使用处理程序,该处理程序将附加到将来的控件(现已弃用的 .live 的当前方法)。
例:http://jsfiddle.net/kQ2JA/1/
这将更好地满足将事件绑定到所有当前和未来控件的期望。
- Asp.net按钮事件点击不做回发.有可能吗
- plupload智能手机和平板电脑浏览按钮事件未启动
- 如何使用C#为特定按钮事件调用JavaScript方法
- jQuery UI可排序,释放鼠标按钮事件
- jQuery按钮事件处理程序没有't更改内容
- 未调用按钮事件
- 如何将按钮事件与唯一控件关联
- 如何在不加载页面的情况下创建按钮事件
- 用于更改 HTML 表单中的输入文本的 Javascript 按钮事件
- 引导模式的自定义按钮事件多次显示
- 科尔多瓦 iOS 按钮事件
- 英特尔 XDK 音量按钮事件
- 删除按钮事件的操作并创建另一个事件
- 单选按钮事件未触发
- 突出显示如何在单击重置缩放按钮事件中捕获和插入逻辑
- jQuery 自动填充选择:“按钮事件”
- 客户端模板按钮事件未触发
- 如何通过Chrome扩展程序检测按钮事件
- 从点击按钮事件原型或 jQuery 发布复选框数组
- Javascript 后退按钮事件侦听器覆盖 android 设备后退按钮