В jQuery 1.4.2 есть ошибка, из-за которой событие change для элемента select срабатывает дважды при использовании DOM-события и события jQuery, и это только в IE7 / 8.Вот тестовый код:
<html>
<head>
<script src="http://code.jquery.com/jquery-1.4.2.js" type="text/javascript"></script>
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery(".myDropDown").change(function() {
});
});
</script>
</head>
<body>
<select class="myDropDown" onchange="alert('hello');">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
</select>
</body>
</html>
Обновление : еще один взгляд на проблему, на самом деле это реальная проблема, с которой мы столкнулись в нашем приложении.Привязка события прямого изменения к селектору, который даже не касается элемента select с DOM-событием, также вызывает двойное срабатывание.
<html>
<head>
<script src="http://code.jquery.com/jquery-1.4.2.js" type="text/javascript"></script>
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery(".someSelectThatDoesNotExist").live("change", function() {
});
});
</script>
</head>
<body>
<select class="myDropDown" onchange="alert('hello');">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
</select>
</body>
</html>
Билет на фактическую ошибку: http://dev.jquery.com/ticket/6593
Это вызывает у нас много проблем в нашем приложении, потому что мы используем оба ASP.NET-события, смешанные с jQuery, и как только вы подключаете событие изменения к любому элементу, каждый выбор (выпадающий список) получает эту проблему двойного срабатывания.Есть ли кто-нибудь, кто знает способ обойти это, пока эта проблема не будет исправлена?