我正在尝试编辑现有'select'元素的'onchange'事件。
例如,我有以下代码:
<select id="sel_id" onchange="javascript:foo();" >
每当我尝试更改其'onchange'属性时,我使用以下内容:
$("#sel_id").attr("onchange", "foo_2()");
仅供参考,此代码应该没有问题,'onchange'属性保持不变。那你该怎么编辑呢?
AMMENDMENT:
您可以删除该属性,然后绑定其他功能,如:
$("#sel_id").removeAttr("onchange").bind("change", function(){ foo_2(); });
但问题仍然存在,是否可以在不首先删除它的情况下更改'onchange'属性?
答案 0 :(得分:17)
这个问题不是一个确切的答案,但我可能会使用这个删除事件:
document.getElementById('sel_id').onchange = undefined;
(见How to Clear/Remove JavaScript Event Handler?)
然后继续:
$('#sel_id').change(function() { foo_2(); });
答案 1 :(得分:4)
如果我使用原生setAttribute()
,则适用于我。
另外,请记住,选择器周围需要引号。
$("#sel_id")[0].setAttribute("onchange", "foo_2()");
还要记住在全局命名空间中定义foo_2
,而不是在jQuery的.ready()
函数内定义。
答案 2 :(得分:2)
使用JQuery更改功能。
$('#sel_id').change(function() { //your code });
答案 3 :(得分:0)
这是使用javascript实现它的方法:
<html>
<head>
<script type = "text/javascript" langauge="JavaScript">
function foo (){
alert("foo");
}
function fi() {
alert('fi');
}
</script>
</head>
<body>
<select id = "select_list" onchange="foo();">
<option value = "1">1</option>
<option value = "2">2</option>
</select>
<input type = "button" value = "change" onclick = "document.getElementById('select_list').onchange = fi;">
</body>
</html>