0

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

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

4

2 回答 2

1

使用filter(),因为它是一个返回的字符串

试试这个

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

更新

首先附加数据并在委托事件上使用...

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


$('.qwerty').on('click' , '.test1' ,function(){
    $(this).toggle();
});        
于 2013-03-28T10:19:36.427 回答
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(...)

于 2013-03-28T10:26:09.977 回答