jQuery将数据绑定到动态创建的对象的单击事件
jquery bind data to click event for object created dynamically
>下面的脚本动态创建按钮和事件。我想将数据绑定到点击事件。但是 bind() 函数失败了,点击事件就是不会触发。无论如何,如果我使用 on() 函数,请单击事件成功触发。
http://jsfiddle.net/hzLv1r6s/2/
function showMessage(evt) {
alert(evt.data.message);
}
$(document).ready(function () {
var activeDiv;
var pVar = { message:'Hello from a paragraph'};
$("a").on("click", function () {
if (activeDiv === $(this).attr('id')) {
$('#__div').hide('slow');
activeDiv = '';
return;
}
$('.box1').empty();
var guts =
'<div id="__div" style="display:none;">' +
'<input type="text" id="__text" value="' + $(this).attr('data-content') + '"/><br>' +
'<button id="__internal" value="aaa">Submit</button>' +
'</div>';
//this one doesn't work on click event
$('#__internal').bind('click',pVar,showMessage);
$($.trim(guts)).appendTo('.box1');
$('#__div').show('slow');
activeDiv = ($(this).attr('id'));
});
/*
//this one does work on click event
$('.box1').on('click','#__internal',function(event){
//alert(event.target.value);
alert($('#__text').val());
});
*/
});
您需要在此上下文中使用event delegation
,
$('.box1').on('click','#__internal' , showMessage);
或者在将 html 字符串附加到 DOM 后尝试将事件绑定到它。
$($.trim(guts)).appendTo('.box1');
$('#__internal').bind('click',pVar,showMessage);
注意:但我不知道你为什么拒绝在这里使用事件委托。
在没有事件委托的情况下创建的演示。
相关文章:
- Javascript对象类在单击时打开窗口进行颜色选择,并在更改时替换对象背景颜色
- 我想在单击对象时打印日志
- 单击以将相机放置在Three js中的对象附近
- 通过单击事件识别画布上的对象
- 用鼠标单击对象,使画布对象消失
- .on(“单击”,..)不处理使用相同的单击功能创建的对象
- 捕捉.svg — 单击其中一个元素时删除对象
- 如何根据单击访问相应对象的值
- 如何确定使用 javascript/html 单击了哪个对象/图像
- 鼠标单击对象统一 5.3 UI
- 如何通过单击更改对象标签 src
- 如何使动态插入的 html 对象可单击
- 如何根据单击的按钮动态删除特定对象的 html 元素
- 在使用onblur进行输入评估时,是否可以获得单击对象的元素id
- JavaScript+addEventListener'单击'在select html对象上忽略
- 类型错误:'单击'对未实现接口HTMLElement的对象调用
- 错误:'这'对象不正确;在JQuery中单击事件-单击时的意外行为
- 使用Jquery在单击“”时显示表单;添加对象”;按钮
- 正在更改显示的<李>单击另一个对象
- 创建随其他对象单击而更改的图像