单击元素时出现问题,这些元素是用.html()添加到页面的
Issue with clicking elements, that were added to page with .html()
所以,我在点击元素上的事件时遇到了问题,这些事件是由jQuery的.html()函数呈现的。这是我正在测试的代码:
<html>
<head>
<title>Test</title>
<script type="text/javascript" src="static/jquery-2.0.3.min.js"></script>
</head>
<body>
<div id="content">
<input type="submit" name="loginButton" id="loginButtonID"/>
</div>
<script>
$('#loginButtonID').click(function() {
$('#content').html('<button name="loginButton" id="newPasswordID">New Button</button>')
});
$('#newPasswordID').on('click', function() {
alert("alert");
});
</script>
</body>
</html>
正如您所看到的,在一开始,我使用id="loginButtonID"
渲染了一个按钮。我有一个.click()
事件,它通过.html()
(因为.text()
将只返回该按钮的HTML代码)和id="newPasswordID"
创建另一个按钮,对于该按钮,我有另一个事件.on()
(而不是.click()
),但该事件不起作用。所以问题是:如何使.on()
事件为第二个按钮工作?
谢谢。
问题是,当您尝试挂接事件时,#newPasswordID
元素不存在。因此,当您执行$("#newPasswordID")
时,它与任何内容都不匹配,因此不会设置任何处理程序。
您可以在呈现该元素后执行此操作,也可以将事件挂接到元素所在的某个容器上(看起来像#content
)并使用事件委派:
$("#content").on("click", "#newPasswordID", function() {
// ...
});
由于这确实将click
挂接在#content
上,但只有当事件经过与#newPasswordID
匹配的元素时才会触发它,因此挂接事件时#newPasswordID
是否存在并不重要。
试试这个:
$('#content').html(
$('<button />').attr('name',"loginButton")
.attr('id', "newPasswordID")
.click(function() {
alert('alert');
})
);
相关文章:
- 我应该怎么做才能避免在网页上移动元素(html、css、jQuery)
- 更改元素HTML,但忽略最后一个子项
- 增加在选择元素HTML中搜索的时间
- Jquery无法获取元素html
- 从所选元素 html 上方的元素获取属性值
- 在 JS 的单选按钮元素 (HTML) 中使用 title 属性
- 如何在页面上播放每个音频元素(HTML,JQuery,Javascript)
- 我需要一种新的方法来检测元素 HTML 是否有更改
- 获取父元素 html 以及子内容
- AngularJS指令:如何在ng-repeat中动态更改元素html
- html 属性中的引号被标记为 ”来自元素.html()的结果
- 在指令's链接中替换angular元素html
- 如果元素有子元素html元素
- 如何下推表格中的元素- HTML
- 如何在纯javascript中使用变量插入数组值,如元素HTML
- jQuery textilate .js -如何“重置”元素HTML并重新启动动画
- 将元素HTML附加到新附加的textarea中
- 在添加类的情况下,CSS 3的过渡是否不能与模板元素(HTML 5)一起工作?
- jQuery没有更新DOM元素HTML
- 在jQuery中更快地替换元素HTML