2012-01-16 3 views
0
jQuery(".location a").click(function() 
     { 
      var data="type=loc&data="+jQuery(this).attr('name'); 
      jQuery.ajax({ 
        type: "POST", 
        url: "<?php echo home_url('/');?>wp-content/plugins/manageTeam/ajax.php", 
        data: data, 
        beforeSend: function() { 
         jQuery(".teammemcont").hide(); 

         }, 
        success: function(msg){ 
          jQuery(".teammemcont").html(msg); 
          jQuery(".teammemcont").show();         
        } 
       }); 

     }); 

здесь содержание возвращаемого AJAX загружается в teammemcont container.now, если я хочу, чтобы нажать на класс загруженного содержимого с помощью AJAX, то это не означает working.that нажмите событие не работает над возвращенным контентом ajax.JQuery, содержание Аякса не кликабельны

ответ

0

Это связано с тем, что эти элементы не существуют в DOM в момент привязки события. Вы должны связать это событие с помощью метода on (если вы используете JQuery 1.7+) или delegate (если вы используете старую версию):

//jQuery 1.7+ 
$(".teammemcont").on("click", ".someClass", function() { 
    //Newly added element clicked! 
}); 

//Older versions... 
$(".teammemcont").delegate(".someClass", "click", function() { 
    //Newly added element clicked! 
}); 
+0

я изменил свой код как JQuery делегат (". Местоположение а", "нажмите кнопку", функция() {...}); но он не работает ... если я помещаю тело вместо .teammemcont, он работает ... здесь класс местоположения находится за пределами класса teammemcont. – Chinmoy

+0

Вам нужно позвонить 'delegate' на предка элемента, который вы хотите инициировать. Поэтому, если '.location' не находится где-то внутри' .teammemcont', это не сработает. Как вы обнаружили, «тело» должно работать, потому что все должно быть потомком. –

+0

так что это за решение? Plz просмотреть ссылку http://www.tomlodziak.co.uk/gtssweb/?page_id=16 здесь средний элемент div может быть изменен с помощью ajax (путем щелчка по местоположению, az или фильтра) средний элемент появится во всплывающем окне после нажатия на него. Но он не работает на выходе ajax. – Chinmoy

0

click() функция только связывает обработчик событий к элементам которые существуют при его запуске, поэтому любой динамически добавленный контент не будет затронут. Для этого вам нужно будет использовать метод для добавления обработчика событий к динамически создаваемому контенту, а именно on() (jQuery 1.7+) или delegate() (до jQuery 1.7). live() устарел и не должен использоваться.

0

Вы должны использовать делегирование делегаций для добавления элементов, которые необходимо учитывать. Когда вы просто используете .click(), элементы, которые вы загружаете с помощью ajax, еще не находятся в DOM, поэтому ничто не привязано к ним.

Использование .on() (или .delegate()):

$('.teammemcont').on('click', '.location a', function(e) { 
    ... 
}); 

В принципе, вы делегировать обработку события нажатия на кнопку «.Location а» элементов к родителю, который существует в DOM (можно даже подняться элемент документа).
Таким образом, элементы «.location a» в этом контейнере будут учтены автоматически.

0

События щелчка работают только с элементами на странице во время привязки прослушивателя событий.

Если вы хотите, чтобы ваше событие click работало над созданными элементами (например, в вашем случае через ajax) ПОСЛЕ загрузки страницы, вам нужно использовать одну из многих функций делегата.

Если вы используете 1.7 или выше, используйте on(), если вы используете более раннюю версию, затем используйте delegate().

on()

delegate()

0

вы должны использовать метод live из JQuery, чтобы связать события с динамическим элементом. ("Teammemcont "). В вашем случае вы должны использовать

$("class selector").live('click',function(){ 
//do stuff 
}); 
+1

'live' устарел. Если вы используете jQuery 1.7+, вы должны использовать 'on'. Если вы используете более старую версию, вы должны использовать 'delegate'. –

+0

@JamesAllardice благодарит за обновления. Я проверяю это – Dau

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