未附加到加载后创建的元素的 JS 事件
JS Events not attaching to elements created after load
>问题:在单击按钮时创建元素,然后将单击事件附加到新元素。
我已经多次遇到此问题,我似乎总是找到解决方法,但从未找到问题的根源。看看代码:
.HTML:
<select>
<option>567</option>
<option>789</option>
</select>
<input id="Add" value="Add" type="button"> <input id="remove" value="Remove" type="button">
<div id="container">
<span class="item">123</span>
<br/>
<span class="item">456</span>
<br/>
</div>
JavaScript
$(".item").click(function () {
if ($("#container span").hasClass("selected")) {
$(".selected").removeClass("selected");
}
$(this).addClass("selected");
});
$("add").click(function() {
//Finds Selected option from the Select
var newSpan = document.createElement("SPAN");
newSpan.innerHTML = choice;//Value from Option
newSpan.className = "item";
var divList = $("#container");
divList.appendChild(newSpan);//I've tried using Jquery's Add method with no success
//Deletes the selected option from the select
})
以下是我已经尝试过的一些方法:
- 标准jQuery点击具有类"item"的元素 包括使用 'live()'
- 和 'on()' 方法
- 在创建元素后设置内联"onclick"事件
- 使用 Bind 方法绑定点击事件处理程序的"#Container"上的 jQuery 更改事件
警告:我无法创建另一个选择列表,因为我们使用的是 MVC,并且在从列表框中检索多个值时遇到问题。因此,生成的隐藏元素实际上与MVC相关联。
在这种情况下,
请使用$.on
而不是标准$.click
:
$("#container").on("click", ".item", function(){
if ( $("#container span").hasClass("selected") ) {
$(".selected").removeClass("selected");
}
$(this).addClass("selected");
});
在我看来,您想在.item
元素之间移动.selected
类。如果是这种情况,我建议这样做:
$("#container").on("click", ".item", function(){
$(this)
.addClass("selected")
.siblings()
.removeClass("selected");
});
另请注意,如果您希望绑定到具有"add"ID 的元素,则应$("#add")
$("add")
。本节也可以重写:
$("#add").click(function() {
$("<span>", { html: $("select").val() })
.addClass("item")
.appendTo("#container");
});
相关文章:
- JQuery添加元素需要在我的js之前再次添加JQuery脚本
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- HTML 显示/隐藏元素 JS 不起作用
- 定位 d3 上的其他元素.js事件上
- 如何获取
- 元素 js/ajax 的 Id 值
- 从元素 JS 中获取类
- 单击 html 元素 JS
- 数据未追加到车把中的元素.js
- 如何使用节点逐个获取元素.js Cheerio
- MEJS(媒体元素JS)播放功能
- 检测是否在输入元素JS中输入了特殊字符
- 如何根据下拉选择消除HTML表单中的元素?(JS吗?)
- 带有动态链接标记的可满足元素(JS、jQuery)
- 仅为UL的第一个元素(JS或jquery)添加类的样式
- 自动时间元素js
- 可以't获取API响应的特定元素[JS]
- 修改指定li元素JS的父级
- 奇异:CSS转换元素JS "点击通过"
- 通过文本框获取数组元素(JS验证)