【问题标题】:jquery accessing data() of window.parent from iframejquery 从 iframe 访问 window.parent 的 data()
【发布时间】:2015-12-25 01:47:11
【问题描述】:

在我的父窗口中:

<input type=text size=100 id="picker1" data-listoption="1" data-type="size">

然后在我拥有的 iframe 内

<script>
  $(document).ready(function(){

    var parent_input = $("#picker1", window.parent.document);
    var searchdata = $(parent_input).data();
        var listtype = $(parent_input).data('listoption');
    console.log(searchdata);
        console.log(listtype);


});     

并且控制台中的两个输出都是空的。这里缺少什么?

【问题讨论】:

  • 你不能访问另一个(父)框架的 dom。
  • 您确定可以通过父窗口确定选择器的范围吗?
  • 不确定你想用这个实现什么,但你尝试过 html() 而不是 data()?另外,它在同一个域中吗?也许它无法访问。
  • 尝试在没有$(parent_input)的情况下调用parent_input.data('listoption'),它已经是一个jQuery对象
  • 我可以通过 parent_input.attr('data-listoption'); 获取单个数据值;

标签: javascript jquery html iframe


【解决方案1】:

Jquery 不提供使用窗口的父级来确定选择器范围的能力。但是您可以使用 parent 从子级访问父级上的 jQuery。

试试:

var parent_input = parent.$("#picker1");
var searchdata = $(parent_input).data();
var listtype = $(parent_input).data('listoption');
console.log(searchdata);
console.log(listtype);

工作示例 http://jsfiddle.net/AEj4Z/

【讨论】:

  • 我得到 TypeError: window.opener is null 尝试使用 window.opener.$("#picker1");
  • @BethB 我提供了一个小提琴,但我可能误解了您的要求,我以为您使用的是新窗口而不是 iframe。
  • window.opener 用于访问弹出窗口的打开窗口。但仅使用 window.parent 或仅使用 parent 应该可以,我已经在这方面编辑了您的答案。显然,它也需要将 jQuery 嵌入到父窗口中。
  • @CBroe 感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多