Применить код jquery ко всем элементам - PullRequest
1 голос
/ 05 июля 2011

как я могу применить функцию jquery к элементам, загруженным с помощью ajax?

<span class="h">Test</span><br /><br />
<span class="h">Test</span><br /><br />
<span class="h">Test</span><br /><br />
....
<span class="h">Test</span><br /><br />
<script type="text/javascript">
    $(document).ready(function() {
    $('.h').click(function() {
        alert("test");
    });
});
</script>

Итак, это работает отлично.Каждый щелчок по элементу span возвращает предупреждение.Но там функция щелчка не применяется к элементам, загруженным с помощью ajax:

<span class="h">Test</span><br /><br />
<span class="h">Test</span><br /><br />
<span class="h">Test</span><br /><br />
....
<span class="h">Test</span><br /><br />
<script type="text/javascript">

    $(window).scroll(function(){
    if  ($(window).scrollTop() == $(document).height() - $(window).height()) {
        $('body').append('<span class="h">Test3</span><br /><br />');
    }
    });

    $(document).ready(function() {
    $('.h').click(function() {
        alert("test");
    });
});
</script>

Как я могу решить эту проблему?

Ответы [ 6 ]

2 голосов
/ 05 июля 2011

jQuery's live() - это то, что вы хотите:

$('.h').live('click', function () {
  // Do something!
}
0 голосов
/ 05 июля 2011
     $(document).ready(function() {
         $('.h').live('click', function() {
            alert("test");
         });
     });
0 голосов
/ 05 июля 2011

Вы не применяете поведение.Вам нужно использовать метод jQuery live , чтобы постоянно проверять DOM на наличие новых элементов.

Демонстрация live

0 голосов
/ 05 июля 2011

Вам нужна функция live, чтобы связать событие с элементами, созданными динамически:

$('.h').live('click', function() {
    alert("test");
});
0 голосов
/ 05 июля 2011

Вы должны использовать live вместо click, чтобы событие связывалось и с вновь добавленными элементами:

$('.h').live('click', function() {
    alert("test");
});
0 голосов
/ 05 июля 2011

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

Или, как указано @jerluc, использовать функцию live().

...