我有一个 ajax 响应想要解析标签,并且我只想在特定的 div id 中查找脚本标签。下面的代码将捕获并运行页面中的每个 JavaScript:
success: function(data) {
var dom = $(data);
dom.filter('script').each(function(){
var obj = $(this);
$('#my_div').append(obj);
});
},
当我尝试首先按 div id 过滤,然后按脚本过滤时,它不会附加任何内容。我显然可以访问响应 html,并且可以看到“js_outer_div”div 中应该有多个标签:
var dom = $(data);
dom.filter('js_outer_div').filter('script').each(function(){
var obj = $(this);
$('#my_div').append(obj);
});
不幸的是我无法控制响应 html。有没有办法像我想要的那样先按 div 过滤,然后按脚本过滤?
编辑:示例 html 响应:
...
<div id="i9-content-div">
<script xmlns:efactions="http://www.enginframe.com/2009/efactions" xmlns:grid="http://www.enginframe.com/2000/GRID" type="text/javascript">
...
</script>
<script type="text/javascript">
...
</script>
</div>
最佳答案
I can see that there should be multiple tags in the 'js_outer_div' div
如果js_outer_div
是一个类名,那么filter
方法应该是:
dom.filter('.js_outer_div')...
但是不,这并不能解决问题。 filter
方法过滤集合中的顶级元素。 jQuery 集合不是扁平的,它保留了元素层次结构。您应该使用 find
方法。由于 find
方法选择集合中包装元素的后代,因此您可以生成 div
元素并使用 html
方法设置其内容使用data
变量。现在,无论目标 div.js_outer_div
是否是顶级元素,find
方法都可以工作。
$('<div/>').html(data).find('.js_outer_div script').each(...)
关于javascript - jquery - 在两个 .filter() 之后获取脚本标签的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31304376/