2014-02-05 2 views
0

У меня есть этот код, который работает большой на уже созданных дивыкак связать 2 события с помощью метода .На JQuery в

$('.MyDivs').click(function(){ 
     $('#OtherDiv').css('display','block'); 
}).mouseleave(function(){ 
     $('#OtherDiv').css({ display: 'none' }); 
}); 

, но не работает на динамически создаваемые новые дивы. Я знаю, что есть метод .on JQuery для динамически созданных div, но не знаю, как связать с ним 2 события. Я пытался что-то вроде этого

$(document).on('click', '.MyDivs', function() 
{ 
    $('#OtherDiv').css('display','block'); 
}).mouseleave(function(){ 
    $('#OtherDiv').css({ display: 'none' }); 
}); 

Я также попытался это

$(document).on('click', '.MyDivs', function() 
{ 
    $('#OtherDiv').css('display','block'); 
}); 
$(document).on('mouseleave', '.MyDivs', function() 
{ 
    $('#OtherDiv').css({ display: 'none' }); 
}); 

, но не работает. Как я могу привязать методы click и mouseleave с помощью .on?

Моя проблема

Я просто хочу, чтобы показать Otherdiv по щелчку любого DIV, который имеет .MyDivs класса и скрыть Otherdiv, когда мышь покидает данный момент .MyDivs ДИВ

+0

Как это последний не работает? – epascarello

+0

Я не знаю, почему последний не работает –

+0

Это то же самое, что и выбранный ответ, только в другом формате. – epascarello

ответ

0

вы можете попробовать. Это должно сработать.

$(document).on({ 
    mouseenter: function() { 
     // Handle mouseenter... 
    }, 
    mouseleave: function() { 
     // Handle mouseleave... 
    }, 
    click: function() { 
     // Handle click... 
    } 
}, ".MyDivs"); 
+0

Нет, это ведет себя точно так же, как мой выше код и remvoes Anotherdiv сразу, даже мышь все еще внутри .MyDivs div –

+0

вы сказали, что ваша проблема - метод «on». Какова ваша фактическая проблема? –

+0

Я просто хочу показать ** Otherdiv ** при щелчке любого div, который имеет **. MyDivs ** класс и скрыть ** Otherdiv **, когда мышь уходит в настоящее время **. MyDivs ** div –

0

Для каждой цепи необходимо использовать on. Это должно работать:

$(document).on('click', '.MyDivs', function() { 
    $('#OtherDiv').css('display','block'); 
}).on('mouseleave', '.MyDivs', function() { 
    $('#OtherDiv').css('display','none'}); 
}); 

Или вы можете связать оба события и искать event.type, а затем установите переключатель в DIV в зависимости от результата:

$(document).on('click mouseleave', '.MyDivs', function(e) { 
    $('#OtherDiv').toggle(e.type == 'click'); 
}); 
+0

Нет, это ведет себя точно так же, как мой код выше и remvoes Anotherdiv сразу даже мышь все еще внутри .MyDivs div –

+0

[Demo] (http://jsfiddle.net/andyuws/ga56v/) – Andy

+0

+1. Спасибо Дэвиду, но пример Павла хорошо работал –

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