如何在'select'标签中编辑'onchange'属性? (使用jquery)

时间:2010-09-03 17:08:48

标签: jquery html events select

我正在尝试编辑现有'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'属性?

4 个答案:

答案 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>