Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何知道DOM元素是否在jquery范围内?_Javascript_Jquery - Fatal编程技术网

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

Javascript 如何知道DOM元素是否在jquery范围内?,javascript,jquery,Javascript,Jquery,可能重复: 我的asp.net网站中有许多框架。因为我不知道它的布局,我需要更新jquery代码所在的不同帧中的值,所以我执行以下操作: $('myspan').text('sometext') 但一切都变了。所以我不知道这是否是因为jquery没有用这个选择器捕获元素,因为它不在它的范围内,或者为什么 然而,这: alert($('myspan')它显示一个警报,结果是[object][object]。jQuery函数($('someSelector'))将始终返回一个对象,即使没有与选择器

可能重复:

我的asp.net网站中有许多框架。因为我不知道它的布局,我需要更新jquery代码所在的不同帧中的
值,所以我执行以下操作:

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

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

然而,这:

alert($('myspan')它显示一个警报,结果是
[object][object]

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

如果您确实在使用多个框架,那么您会遇到一个问题:jQuery无法跨框架找到元素,只能在当前文档/框架中找到元素,除非您为要定位的特定文档传递了适当的上下文对象

例如,如果您有一个
,您可以使用以下内容在其中查找
#myspan

var frameDoc = $('#myframe')[0].contentWindow.document;
var mySpan = $('#myspan', frameDoc);
要使其工作,iframe的源必须与主页托管在同一个域中。下面的评论中还建议了以下更清洁的选项:

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

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

如果您确实在使用多个框架,那么您会遇到一个问题:jQuery无法跨框架找到元素,只能在当前文档/框架中找到元素,除非您为要定位的特定文档传递了适当的上下文对象

例如,如果您有一个
,您可以使用以下内容在其中查找
#myspan

var frameDoc = $('#myframe')[0].contentWindow.document;
var mySpan = $('#myspan', frameDoc);
要使其工作,iframe的源必须与主页托管在同一个域中。下面的评论中还建议了以下更清洁的选项:

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


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

var e = $(...);
console.log(['Explanation', e.get()]);
不带参数的
get()
会将奇怪的jQuery选择器结果转换为普通JavaScript数组,您可以在浏览器控制台中展开该数组。这将有助于查看选择器返回的内容


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

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

var e = $(...);
console.log(['Explanation', e.get()]);
不带参数的
get()
会将奇怪的jQuery选择器结果转换为普通JavaScript数组,您可以在浏览器控制台中展开该数组。这将有助于查看选择器返回的内容


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

$(#'myspan')
看起来是错误的,您可能是指
$('#myspan')
警报($())
也将显示
[对象对象]
,因为
$()
始终返回对象。
警报($(#myspan')显示
[object]
并不意味着它与元素匹配。jQuery总是返回一个对象,不管它是否匹配。如果您发出
警报($('#myspan').length)
,您可能会看到它不匹配任何元素。有关如何在
中获取元素的信息,请参阅使用具有良好控制台(webkit)的浏览器,并使用
console.log($('#myspan')。这比将对象作为字符串发出警报要好得多。
$(#'myspan')
看起来是错误的,您可能是指
$('#myspan')
警报($())
也将显示
[object object]
,因为
$()
总是返回一个对象。
警报($('myspan')显示
[object]
并不意味着它与元素匹配。jQuery总是返回一个对象,不管它是否匹配。如果您发出
警报($('#myspan').length)
,您可能会看到它不匹配任何元素。有关如何在
中获取元素的信息,请参阅使用具有良好控制台(webkit)的浏览器,并使用
console.log($('#myspan')。这比以字符串形式通知对象要好得多。上下文是否跨帧工作?什么是正确的上下文-
iframe.document
?@JanDvorak:如果您的帧位于不同的域上,则会在这里咬到您。
var mySpan=$('#mySpan',$(“#myframe”).contents()
有点漂亮。@JanDvorak:AFAIK CORS允许x域请求,而不是x域DOM遍历。请参阅(这些方法中没有一种得到很好的支持)。@JanDvorak只是想确认一下:我已经测试过了,它可以工作(对于同一个域,x域不应该工作)。上下文可以跨帧工作吗?什么是正确的上下文-
iframe.document
?@JanDvorak:如果您的帧位于不同的域上,则会在这里咬到您。
var mySpan=$('#mySpan',$(“#myframe”).contents()
有点漂亮。@JanDvorak:AFAIK CORS允许x域请求,而不是x域DOM遍历。请参阅(这些方法中没有一种得到很好的支持)。@JanDvorak只是想确认一下:我已经测试过了,它可以工作(对于同一个域,x域不应该工作)。