我有一个ajax请求,可以获取一些html
<div id="test">
</div>
在我的成功方法中我有这个
$('#test', response).addClass('mytest');
$('#SomethingOnMyPage').after(response);
然而,当我在页面上看到它时,我看不到mytest。就好像它没有添加课程一样。
我也试过
$(response).filter('div.test').addClass('mytest');
相同的结果
答案 0 :(得分:1)
如果div#test
确实是响应中最外层的HTML元素,那么这就是您所需要的:
var $elt = $(response).addClass('mytest');
$('#somethingOnYourPage').after($elt);
这是因为$('#test', response)
- 相当于$(response).find('#test')
- 搜索response
最外层元素的后代;由于#test
是最外层的元素而不是后代元素,因此该选择器将不匹配任何内容。
答案 1 :(得分:0)
$(response).filter('div.test').addClass('mytest');
这不会奏效,因为它会寻找带有'test'类的div,而不是ID'test'。你可以尝试这个:
$(response).filter('#test').addClass('mytest');
看它是否有所不同。
关于第一部分。正如另一位回答者所说,response
是div#test,所以寻找#test 作为孩子总是会失败。如果这仍然不是解决方案,请尝试在尝试修改之前将片段添加到DOM (这不应该是必需的,但是在这样做时,您可能会发现确切的错误。您的jQuery无效的片段。)
另外,您是通过“查看源代码”还是通过浏览器的开发人员工具查看此内容?如果是先前的,它将永远不会显示,因为它只会在执行任何JS之前显示从服务器下载的原始HTML。