如何知道DOM元素是否在jquery范围内

how to know if a DOM element is in the jquery scope?

本文关键字:jquery 范围内 是否 元素 何知道 DOM      更新时间:2023-09-26

可能重复:
jquery选择iframe子级

我的asp.net网站上有很多相框。由于我不知道它的布局,并且我需要在jquery代码所在的不同帧中更新<span>值,因此我执行以下操作:

$('#myspan').text('sometext');

但一切都变了。所以我不知道是不是因为jquery没有用这个选择器捕获元素,因为它不在它的范围内,或者为什么。

然而:

alert($('#myspan'));显示一个结果为[object][object]的警报。

jQuery函数($('someSelector')(将始终返回一个对象,即使没有元素与选择器匹配。

如果您确实在使用多个框架,则会出现问题:jQuery无法跨框架找到元素,只能在当前文档/框架中找到–除非为要作为目标的特定文档传递一个合适的上下文对象。

例如,如果你有一个<iframe id="myframe">,你可以用这个来查找里面的#myspan

var frameDoc = $('#myframe')[0].contentWindow.document;
var mySpan = $('#myspan', frameDoc);

为了实现这一点,iframe的源必须与主页面位于同一域中。下面的评论中还建议了以下更清洁的选项:

var mySpan = $("#myframe").contents().find('#myspan')

var mySpan = $('#myspan', $("#myframe").contents());

调试jQuery问题的一个好方法是以下模式:

var e = $(...);
console.log(['Explanation', e.get()]);

不带参数的get()将把奇怪的jQuery选择器结果转换为一个普通的JavaScript数组,您可以在浏览器的控制台中展开它。这应该有助于查看选择器返回的内容。

如果它与任何内容都不匹配,那么您的选择器不知何故是错误的。如果元素确实存在,请检查浏览器开发工具中的当前DOM。