2010-11-10 6 views
8

MouseUp не срабатывает на полосе прокрутки для элементов динамически добавляемых (кроме 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», то и стрелка на полосе прокрутки также будет отображаться во всех браузерах.

После нескольких тестов кажется, что если «ul» добавлено динамически или нет, подсказка просто не распознает полосу прокрутки как часть «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: ');});

+0

Я не думаю, что вы сможете заставить IE запускать событие mouseup. Что ты пытаешься сделать? – InvisibleBacon

+0

@InvisibleBacon Я просто хочу сделать простой всплывающий список выбора. Но IE не возвращает false на «mousedown». Поэтому я попытался сделать взломать: развязать размытие на «mousedown» и снова связать размытие «мыши». Но я обнаружил, что mouseup не будет запускаться на полосе прокрутки на всех бровях (кроме FF): http://stackoverflow.com/questions/4140317/does-anyone-know-if-ie-return-false – silversky

+0

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

ответ

3

Угу. Вот открытая ошибка в 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. Это может быть частичным обходным решением.

Смежные вопросы