Ошибка с мышью во всех браузерах, кроме Firefox?

Mouseup не запускает полосу прокрутки для динамически добавляемых элементов (кроме Firefox):

CSS:

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

HTML:

<input type="text" id="s">

JQuery:

$(function() {
    $('#s').focus(function() {
        var $dbox = $('<ul id="dBox"></ul>');
        for (i = 0; i < 10; i++) $dbox.append('<li>' + i + '</li>');
        $(this).after($dbox);
        $dbox.bind("mouseup", function() {
            alert('in: ');
            //console.log ('in: ');  
        });
    });
});
// OR LIKE THIS
$('#s').focus(function() {
    var $dbox = $('<ul id="dBox"></ul>');
    for (i = 0; i < 10; i++) $dbox.append('<li>' + i + '</li>');
    $(this).after($dbox);

});
$('#dBox').live("mouseup", function() {
    alert('in: ');
    //console.log ('in: ');  
});

Если щелкнуть в любом месте, ul сработает, НО не на полосе прокрутки. Такая же проблема существует во всех браузерах, кроме Firefox.

Если вы замените «mouseup» на «mousedown», это также будет срабатывать на полосе прокрутки во всех браузерах.

После еще нескольких тестов кажется, что это не имеет значения, добавлен ли он динамически или нет, mouseup просто не распознает полосу прокрутки как часть ul (кроме FF).

И та же проблема, если вы замените ul на div и li на p.
<div id="dBox" class="" ><p>1</p><p>2</p><p>3</p><p>4</p><p>5</p><p>6</p><p>7</p><p>8</p><p>9</p></div>

$('#dBox').mouseup(function () {alert ('in: ');});


person silversky    schedule 10.11.2010    source источник
comment
Я не думаю, что вы сможете заставить IE запускать событие mouseup. Что ты пытаешься сделать?   -  person InvisibleBacon    schedule 10.11.2010
comment
@InvisibleBacon Я просто хочу создать простой всплывающий список выбора. Но IE не возвращает false при "mousedown". Итак, я попытался сделать хак: отменить размытие на «mousedown» и снова связать размытие с «mouseup». Но я обнаружил, что mouseup не срабатывает на полосе прокрутки во всех браузерах (кроме FF): stackoverflow.com/questions/4140317/   -  person silversky    schedule 10.11.2010
comment
После еще нескольких тестов кажется, что mouseup не запускается на полосе прокрутки, даже если ul и li помещены в исходный документ. (кроме FF)   -  person silversky    schedule 10.11.2010


Ответы (1)


Ага. Вот открытая ошибка в Chrome: http://code.google.com/p/chromium/issues/detail?id=14204

А на webkit: https://bugs.webkit.org/show_bug.cgi?id=25811 и https://bugs.webkit.org/show_bug.cgi?id=40648

Вот снисходительный ответ Microsoft: «Вам это не нужно»: http://social.msdn.microsoft.com/Forums/en-US/netfxjscript/thread/3749b8a1-53ef-48fe-be81-b2df39d6154f/

Этот последний поток поднимает возможность использования onscroll вместо onmouseup. Это может быть частичное решение.

person James Baker    schedule 06.04.2011