0

可能重复:
jquery 选择 iframe 子项

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

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

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

然而这:

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

4

2 回答 2

3

The jQuery function ($('someSelector')) will always return an object, even if no elements match the selector.

If you really are using multiple frames, you have a problem: jQuery can't find elements across frames, only in the current document/frame – unless you pass a proper context object for the specific document you want to target.

For example, if you have an <iframe id="myframe">, you can look for #myspan inside it with this:

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

For that to work, the iframe's source must be hosted in the same domain as the main page. There's also the following cleaner options, suggested in the comments below:

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

or

var mySpan = $('#myspan', $("#myframe").contents());
于 2013-01-04T17:03:15.103 回答
1

调试 jQuery 问题的一个好方法是这种模式:

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

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

如果它不匹配任何东西,那么您的选择器在某种程度上是错误的。如果元素确实存在,请在浏览器的开发工具中检查当前 DOM。

于 2013-01-04T17:06:14.333 回答