2010-05-29 4 views
0

Это мой JQuery кодJquery связывают не работает на AJAX загружен HTML

jQuery(document).ready (function() { 

    // post 
    $('.post').bind('mouseenter mouseleave', function() { 
     $(this).filter('.btn').toggleClass('hidden'); 
    }); 


}); 

Он отлично работает в стандартном режиме. но когда я загружаю некоторый HTM: (то есть некоторые div с атрибутами .post), используя ajax и вставляя его в мой DOM.

Приведенный выше код не работает с этими div.

ответ

3

Попробуйте использовать live:

jQuery(document).ready (function() { 
    $('.post').live('mouseenter mouseleave', function() { 
     $(this).filter('.btn').toggleClass('hidden'); 
    }); 
}); 

Или еще лучше delegate

jQuery(document).ready (function() { 
    $('#posts').delegate('.post','mouseenter mouseleave', function() { 
     $(this).filter('.btn').toggleClass('hidden'); 
    }); 
}); 
+0

Привет, я попробовал это и не работал как с статическим, так и с ajax загруженным контентом. И я хочу, чтобы он фактически работал как с статическим контентом, так и с загруженным контентом одним выстрелом. –

+0

Live или делегат должен сделать так, чтобы событие запускалось для статического и загруженного содержимого. Должно быть что-то еще происходит. – PetersenDidIt

+0

Нет блокировки .. Я не знаю, что это такое .. Но bind работает нормально со статическим контентом, а live и delegate не работает –

2

Ваше время, вероятно, выключено, так как атрибут div должен быть фактически существовать в dom, прежде чем вы сможете связать что-либо с ним.

+0

спасибо за знания. Итак, каков обходной путь? –

+0

Посмотрите, поможет ли это вам: http://api.jquery.com/delegate/ Использовать '$ ('body'). Delegate ('. Post', 'mouseenter mouseleave', f' и т. Д. – edl

+0

Я имею в виду 'body' as ваш селектор или какой-либо внешний элемент, в котором содержатся ваши div. – edl

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