javascript - jquery - 在两个 .filter() 之后获取脚本标签的问题

标签 javascript jquery ajax filter tags

我有一个 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/

相关文章:

javascript - 日期范围选择器和图表 js

javascript - 从 javascript 对象键创建对象数组

javascript - Rails 中的 Ajax POST 请求错误

php - 如何从 Javascript 脚本链接并执行 PHP 文件?

javascript - Spring MVC 将带有延迟加载字段的 hibernate 对象返回给 AjaxResponseBuilder

javascript - 在大 Canvas 上绘制大量图像时出现异常行为

javascript - knockout validation 组错误检查

javascript - 如何在 Owl Carousel 中添加随机动画效果?

jquery - Hive 查询到组

javascript - jquery close() 树遍历