У меня есть два сортируемых списка, один из которых является вложенным, с наведением мыши на элементы li вложенного сортируемого списка. Моя проблема в том, что функции mouseover и mouseout вызываются непоследовательно, когда пользователь быстро перемещает мышь по списку над дочерними элементами.
Вот пример того, что происходит: вам нужно перетащить панель в список, а затем перетащить 3-4 элемента текстового поля в панель, чтобы увидеть проблему. Вы можете видеть, что 2 числа в верхнем правом углу отслеживают вход / выход мыши. Примечание. До сих пор я проверял только свой сайт в Firefox.
пример
Мой код JQuery:
Вот функции наведения и наведения мыши:
<code>
$(".pane > li").live("mouseover", function(){
$("#in").html(in1);
$(this).children(".test").stop().animate({opacity: 1},400);
in1++;
});</p>
<p>$(".pane > li").live("mouseout", function(){
$("#out").html(out1);
$(this).children(".test").stop().animate({opacity: 0},400);
out1++;
});</p>
<p>$(".pane > li > *").live("mouseover", function(event){
event.stopPropagation();
});</p>
<p>$(".pane > li > *").live("mouseout", function(event){
event.stopPropagation();
});
Первый сортируемый список:
var counter = 0;
var height="";
var in1 =0;
var out1=0;</p>
<pre><code>$("#left-form-space").sortable({
обновление: функция (ev, ui) {
if (! ui.item.is ('. noChange')) {
addNewPane (ui.item);
}
},
start: function (event, ui) {
if (ui.item.is ('. noChange')) {
$ ("# left-form-space"). css ({'height': height});
$ ("# left-form-space"). animate ({height: "75px"}, 600, function () {
$ ("# left-form-space"). css ({'height': 'auto'});
});
}
},
stop: function (событие, пользовательский интерфейс) {
$ item = ui.item;
if ($ item.is ('. noChange')) {
$ item.css ({'height': '0px'});
$ item.animate ({height: "150px"}, 600, function () {
$ item.css ({'height': 'auto'});
});
}
},
заполнитель: «.placeholder-highlight»,
курсор: «двигаться»,
вернуться: правда
});
$("ul, li").disableSelection();
Моя функция для добавления вложенных сортируемых списков:
function addNewPane($item){
counter++;
var newID = "pane_" + counter;
$item.attr("id", newID);</p>
<pre><code>$item.html('').animate({height: "150px"}, 600, function(){
$item.css({'height' : 'auto'});
$item.html('<fieldset class="sortable-pane"><div class="pane-nav"><a href="link/to/recycle/script/when/we/have/js/off" title="Delete this image" class="ui-icon ui-icon-close">Delete image</a></div><ul class="pane"></ul></fieldset>');
$("#" + newID + " > fieldset").hide().fadeIn('slow');
$(".pane").sortable({
placeholder: 'ui-state-highlight',
update: function (event, ui){
if (!ui.item.is('.noChange')){
if (ui.item.is('.textbox')){
$(ui.item).html('<div class="test ui-corner-tl ui-corner-bl">test</div><input class="label" value="First Name:"/><input name="input1" id="input1" type="text" /><div id="spacer"></div>');
}
if (ui.item.is('.header')){
$(ui.item).html('<div id="element2" class="element header"><h1>Contact Information</h1></div>');
}
}
},
cursor: 'move',
revert: true
});
var newFormHeight = $("#left-form-space").height() + "px";
height=newFormHeight;
$item.addClass('noChange');
});
};
Спасибо за любую помощь.