首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jquery -在两个.filter()之后获取脚本标记的问题

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

Stack Overflow用户
提问于 2015-07-09 05:44:57
回答 2查看 69关注 0票数 0

我有一个想要解析标签的ajax响应,我只想在特定的div id中查找脚本标签。下面将捕获并运行页面中的每个javascript:

代码语言: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‘目录中应该有多个标记:

代码语言:javascript
复制
var dom = $(data);
dom.filter('js_outer_div').filter('script').each(function(){
    var obj = $(this);                                          
    $('#my_div').append(obj);
});

不幸的是,我无法控制响应html。有没有办法像我想要的那样先按div过滤,再按脚本过滤?

编辑:示例html响应:

代码语言:javascript
复制
... 
<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>
EN

回答 2

Stack Overflow用户

发布于 2015-07-09 05:51:29

我可以看到在'js_outer_div‘目录中应该有多个标签

如果js_outer_div是一个类名,那么filter方法应该是:

代码语言:javascript
复制
dom.filter('.js_outer_div')...

但是不,这并不能解决问题。filter方法筛选集合中的顶级元素。jQuery集合不是平面的,它保留了元素的层次结构。您应该使用find方法。当find方法选择集合中包装器元素的后代时,您可以生成一个div元素,并使用html方法通过data变量设置它的内容。现在,无论目标div.js_outer_div是不是顶级元素,find方法都可以工作。

代码语言:javascript
复制
$('<div/>').html(data).find('.js_outer_div script').each(...)
票数 1
EN

Stack Overflow用户

发布于 2015-07-09 05:51:42

您可以使用find而不是filter

代码语言:javascript
复制
var dom = $(data);
dom.find('js_outer_div script').each(function(){
    var obj = $(this);                                          
    $('#my_div').append(obj);
});

这实际上不会选择任何东西,除非你在某个地方有一个<js_outer_div>标签。您可能需要在find语句中将js_outer_div更改为.js_outer_div#js_outer_div

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31304376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档