/ / Хто-небудь знає, чи IE повертає false? - jquery, Internet Explorer

Хтось знає, чи IE "повертає помилкове"? - jquery, інтернет-дослідник

Цей простий тестовий код працює у всіх браузерах, крім IE (протестований у IE8):

#dBox {
height:100px;
width: 230px;
overflow-y:auto;
}

$(function () {
$("#s").focus(function(){
$(this).after("<ul id="dBox"></ul>");
for (i=0;i<10;i++) $("#dBox").append("<li>"+i+"</li>");
});
$("#dBox").live("mousedown",function(event) {
//event.stopPropagation();
//event.preventDefault();
//console.log  (event.isDefaultPrevented());
//event.stopImmediatePropagation();
return false;
});
$("#s").blur(function () { $("#dBox").remove();  });
});
<input type="text" id="s"/>

Я спробував усі варіанти з прямої трансляції, але не пощастило.
На event.isDefaultPrevented() воно повертає істину, але #dBox його все ще видалено.
Я навіть намагався прив'язати звичайний мишоудав усередині фокусу fn. Але той самий результат працює у всіх браузерах, але не в IE.
Хтось уявляє, що не так?

Відповіді:

0 для відповіді № 1

Це безпосередньо через делегування події з jQuery live () прив'язка подій за допомогою live не пов'язує прямий елемент. Натомість він приєднує обробник до кореневого вузла документа.

.метод live () здатний впливати елементи, які ще не додані до DOM через використання події делегування: обробник, прив'язаний до елемент-предок відповідає за події, які запускаються на його нащадки. Обробник перейшов до .live () ніколи не прив'язаний до елемента; натомість .live () пов'язує спеціальний файл обробника до кореня дерева DOM. У нашому прикладі, коли новий елемент після натискання виконуються такі дії:

Якщо припустити, що ви хочете зосередити увагу на введенні, коли натискається елемент #dBox, це спрацює, і ось демонстрація http://www.jsfiddle.net/WurDE/

Примітка: якщо ви не хочете зберігати фокус на вході, видаліть trigger("focus") з коду.

$(function () {
$("#s").focus(function(){
if (!$("#dBox").length) {
var $dbox = $("<ul id="dBox"></ul>");
for (i=0;i<10;i++) $dbox.append("<li>"+i+"</li>");
$(this).after($dbox);
$dbox.bind("mousedown", function() {
$("#s").unbind("blur")
});
$dbox.bind("mouseup", function() {
$("#s").bind("blur", function () {
$("#dBox").remove();
}).trigger("focus");
});
}
});

$("#s").bind("blur", function () {
$("#dBox").remove();
});
});