2013-03-28 2 views
0

В qwerty.php Я могу загрузить test.php с помощью ajax, я также хочу манипулировать данными, загруженными в функцию успеха, но он, похоже, не работает.jquery, манипулировать данными в функции успеха ajax

В qwerty.php мой код

<div class="qwerty">qwerty</div> 

<script src="jquery.js"></script> 
<script> 

$(function(){ 

$.ajax({ 
    type: 'GET', 
    url: 'test.php', 
    success: function(data, textStatus, jqXHR) { 
     $(data).find('.test1').click(function(){$(this).toggle();}); 
     $('.qwerty').before(data); 

    } 
}); 


}); 
</script> 

и в test.php у меня есть:

<div class="test1">test1</div> 
<div class="test2">test2</div> 

так мои данные правильно загружен перед "QWERTY" div, но когда я нажав «test1», ничего не происходит.

+0

find() смотрит на потомков, и в вашем случае у вас есть 2 брата и сестры. Просто используйте filter(), как они показали вам ответы. –

+0

@CristiPufu, этого недостаточно, так как onclick привязан к объекту, отличному от вставленного. – lordvlad

ответ

1

это не волнует k, потому что вы прикрепляете onclick к $(data), но вставляете data в DOM. попробуйте это:

success: function(data, textStatus, jqXHR) { 
    var el = $(data); 
    el.find('.test1').addBack().filter('.test1').click(function(){$(this).toggle();}); 
    $('.qwerty').before(el); 
} 

Я использовал find(...).addBack().filter(...), чтобы найти все элементы, соответствующие вашему селектору. find() найдет только дочерние элементы test1 и тест 1, имеющий классный тест. filter() будет фильтровать только все корневые элементы, поэтому, если у вас есть дочерние элементы, он не будет искать в них. таким образом, конструкция find(...).addBack().filter(...)

1

использование filter() с момента его строки, которая возвращается

попробовать это

success: function(data, textStatus, jqXHR) { 
    $('.qwerty').before(data); 
    $(data).filter('.test1').click(function(){$(this).toggle();}); 
} 

обновленный

добавить данные первого и использовать на delgated событие ...

success: function(data, textStatus, jqXHR) { 
    $('.qwerty').before(data); 
} 
}); //ajax end 


$('.qwerty').on('click' , '.test1' ,function(){ 
    $(this).toggle(); 
});   
+0

не работает, потому что вы прикрепляете onclick к '$ (data)', но вставляете 'data' – lordvlad

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