在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”时没有任何事情发生。
答案 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(...)