Как отредактировать атрибут onchange в теге select?(используя jquery) - PullRequest
10 голосов
/ 03 сентября 2010

Я пытаюсь отредактировать событие 'onchange' для существующего элемента 'select'.

Для примера у меня есть следующий код:

<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 ]

17 голосов
/ 03 сентября 2010

Не точный ответ на вопрос, но я бы, вероятно, удалил событие, используя это:

document.getElementById('sel_id').onchange = undefined;

(как видно на Как очистить / удалить обработчик событий JavaScript? )

и затем перейдите с этим:

$('#sel_id').change(function() { foo_2(); });
4 голосов
/ 03 сентября 2010

Работает для меня, если я использую нативный setAttribute().

Кроме того, помните, что вам нужны кавычки вокруг селектора.

$("#sel_id")[0].setAttribute("onchange", "foo_2()");

Также не забудьте определить foo_2 вглобальное пространство имен, а не внутри функции .ready() jQuery.

2 голосов
/ 03 сентября 2010

Использовать функцию изменения JQuery.

$('#sel_id').change(function() {
  //your code
});
0 голосов
/ 03 сентября 2010

Вот способ сделать это, используя только 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...