将change()甚至监听器动态地附加到select/dropdown中
Attaching change() even listeners to select/dropdown dynamically
我正在动态创建3个下拉框/选择框,并通过. innerhtml将它们插入DOM中。
我不知道下拉菜单的ID,直到我在Javascript中创建它们。为了知道已经创建了哪些下拉菜单,我创建了一个数组,其中存储了我创建的下拉菜单的ID。
for(var i=0; i<course.books.length; i++)
{
output+="<label for='book_"+course.books[i].id+"'>"+ course.books[i].name +"</label>";
output+="<select id='variant"+course.books[i].id+"' name='book_"+course.books[i].id+"'>";
output+="<option value='-'>-- Select one --</option>";
for(var j=0; j<course.books[i].options.length; j++)
{
output+="<option value='"+course.books[i].options[j].id+"'>"+course.books[i].options[j].name+"</option>";
}
output+="</select>";
}
现在我有了一个有3个id的数组,像
- dropdown1
- dropdown2
- dropdown3
我想用Javascript(不使用jQuery或其他框架)完成的是循环这3个下拉框,并附加一个更改事件监听器。
当用户在其中一个下拉菜单中更改选择时,我想调用一个名为updatePrice
的函数。
我在动态添加事件侦听器上有点卡住了。
现在你已经添加了你的代码,它是直接的,你可以忽略我冗长的回答!!
output+="<select id='variant"+course.books[i].id+"' name='book_"+course.books[i].id+"'>";
可以变成:
output+="<select onchange="updatePrice(this)" id='variant"+course.books[i].id+"' name='book_"+course.books[i].id+"'>";
这将调用updatePrice函数,传递已更改的select列表
然而在我看来,使用DOM在DOM中创建元素要好得多(从性能的角度开始)。
var newSelect = document.createElement("select");
newSelect.id = "selectlistid"; //add some attributes
newSelect.onchange = somethingChanged; // call the somethingChanged function when a change is made
newSelect[newSelect.length] = new Option("One", "1", false, false); // add new option
document.getElementById('myDiv').appendChild(newSelect); // myDiv is the container to hold the select list
这里的工作示例-> http://jsfiddle.net/MStgq/2/
你已经得到数组了吗?然后你可以这样做:
function updatePrice()
{
alert(this.id + " - " + this.selectedIndex);
}
var list = ["dropdown1", "dropdown2"];
for(var i=0;i<list.length;i++)
{
document.getElementById(list[i]).onchange = updatePrice;
}
小提琴:http://jsfiddle.net/QkLMT/3/
这在不同的浏览器中是行不通的。
你需要像
for(var i = 0; i < list.length; i++)
{
$("#"+list[i]).change(updatePrice);
}
在jquery 。
相关文章:
- jquery点击函数select&取消选择
- 在html Select中添加搜索
- Jquery:未触发select事件
- 如何在PHP中使用$_POST获取Select元素值
- ng更改事件不适用于Dropdown
- 无法在Ionic select中预先选择最后一个选项
- Dojo:访问dijit.form.Select中单击的项目
- X秒后刷新select元素
- 根据select选项元素将表单重定向到不同的URL
- 在select元素中显示highchart dashstyle(svg)
- Bootstrap Dropdown selection是在*all*下拉菜单上设置选择
- 使用Dalekjs测试工具,如何在Dropdown中选择Option(select元素)当没有“;值“;Option标记
- Angular State Dropdown Bound to Country Select
- Bootstrap Select With Dropdown
- 使用jQuery设置Select Dropdown
- Angular Select Dropdown带有一个选项,允许用户添加自定义选项
- 将change()甚至监听器动态地附加到select/dropdown中
- Angularjs用ng-href对dropdown/select redirect进行错误验证
- 在EXT JS中使用JSON根据在另一个DropDown中选择的值填充一个DropDown/Select
- Angular js将所选对象传递给dropdown/select:的更改事件