jquery,操纵ajax成功函数中的数据

时间:2013-03-28 10:17:50

标签: javascript jquery ajax

在qwerty.php中我可以用ajax加载test.php,我也想操作成功函数中加载的数据,但它似乎不起作用。

在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>

所以我的数据在div“qwerty之前正确加载”但是当我点击“test1”时没有任何事情发生。

2 个答案:

答案 0 :(得分: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();
});        

答案 1 :(得分:1)

它不起作用,因为您将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和test 1的子元素,类test为one。 filter()只会过滤所有根元素,因此如果您有子元素,则不会在其中进行搜索。因此构造find(...).addBack().filter(...)