无法对动态创建的 html 元素执行单击事件
Not able to perform click event on dynamically created html elements
我正在使用jquery并在$('document').ready()
上动态创建一些ul
,li
和a
。在此之后,ul
- 浏览器中li
渲染看起来像 html 表示中的波纹管
<ul class="ul">
<li class="li">
<a>Some buddy</a>
<ul class="ul">
<li class="li" id="testLi">
<a id="testView">test buddy</a>
</li>
</ul>
</li>
</ul>
请忽略类名。我已将 ID 分配给<li> and child
' 标签。我还有一个写成波纹管的函数:
$(document).ready(function () {
$('#testView').click(function () {
var ul = document.createElement('ul');
ul.className = 'ul';
var li = document.createElement('li');
li.className = 'li';
var a = document.createElement('a');
a.innerHTML = 'test buddy';
$(li).append(a);
$(ul).append(li);
$('#testLi').append(ul);
});
});
现在,如果我单击<a id="testView">test buddy</a>
我的函数不会被调用。我认为这是因为加载了 DOM 并且我的新元素是在 ready()
中创建的。请提供解决方案。
您需要将事件处理程序附加到文档并将事件委托给元素。
你可以做这样的事情:
$(document).on('click', '#testView', function () {
var ul = document.createElement('ul');
ul.className = 'ul';
var li = document.createElement('li');
li.className = 'li';
var a = document.createElement('a');
a.innerHTML = 'test buddy';
$(li).append(a);
$(ul).append(li);
$('#testLi').append(ul);
});
这将应用于具有此 id 的所有元素,无论它们是否在 document.ready() 之前创建。
您的代码工作正常。我已将其添加到下面的代码段中。
$(document).ready(function() {
$('#testView').click(function() {
var ul = document.createElement('ul');
ul.className = 'ul';
var li = document.createElement('li');
li.className = 'li';
var a = document.createElement('a');
a.innerHTML = 'test buddy';
$(li).append(a);
$(ul).append(li);
$('#testLi').append(ul);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="ul">
<li class="li">
<a>Some buddy</a>
<ul class="ul">
<li class="li" id="testLi">
<a id="testView">test buddy</a>
</li>
</ul>
</li>
</ul>
相关文章:
- 使用html 5对元素执行自定义表单验证功能
- 对未知数量的元素执行Jquery循环
- jQuery没有为具有新id的新元素执行代码
- Javascript - 在创建时对数组元素执行操作
- jQuery :对页面上的每个元素执行相同的操作
- 单击对内部元素执行某些操作
- 循环遍历 json 子对象并对每个“元素”执行某些操作
- Javascript 数组映射“出现”以对缺少的元素执行回调
- 无法对动态创建的 html 元素执行单击事件
- 使用 IF 运算符对给定数组中的字母数字和非字母数字元素执行不同的操作
- 为每个包含类的元素执行 jQuery 函数
- 对多个元素执行回调函数
- 即使在类名上触发了click事件,也要对特定元素执行某些操作
- SharePoint<按钮>元素执行页面的不需要的重新加载
- 无法对五个画布元素执行相同的效果
- 如何基于URL对聚合物元素执行select()方法
- 浏览器是否对屏幕元素执行相应的Javascript选择
- 侦听.on()中的shift键,然后使用附加侦听器的元素执行一个函数
- 如何使用JavaScript延迟为数组中的每个元素执行的函数
- 如何使某个javascript函数在页面加载时对其所有元素执行