Допустим, у меня есть сценарий, в котором у меня есть глобальный плагин (или, по крайней мере, плагин, который связывается с более широким массивом событий).
Этот плагин берет селектор и привязывает к нему живой клик. Что-то в псевдо-jquery, которое может выглядеть так:
$.fn.changeSomething = function(){
$(this).live("change", function(){ alert("yo");});
}
На другой странице у меня есть дополнительная привязка в реальном времени, примерно такая:
$("input[type='checkbox']").live("click", function(){alert("ho");});
В этом сценарии флажок в идеале должен быть связан с обоими живыми событиями.
То, что я вижу, это то, что событие изменения срабатывает, как и должно быть, и меня предупреждают "йо". Однако, используя это событие живого клика, я никогда не запускаю его. Тем не менее, используя явную привязку клика, я действительно ударил его.
Простой обходной путь - вызвать событие щелчка в конце обработчика изменений в реальном времени, но мне это кажется неоправданным. Есть идеи?
Обратите внимание, что это использует jquery 1.4.2 и происходит только в IE8 (я предположил, что 6/7 тоже, но я не проверял их).
пример (вам понадобится jquery-1.4.2.min.js):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<script src="jquery-1.4.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
$.fn.changeSomething = function(){
var t = $(this);
t.live("change", function(){
alert("yo");
});
};
$(document).ready(function(){
$("input[type='checkbox']").changeSomething();
$("#special").live("click", function(){
alert("ho");
});
});
</script>
</head>
<body>
<form>
<input type="checkbox" id="cbx" />
<input type="checkbox" id="special" />
</form>
</body>
</html>