在父窗口中单击元素

时间:2013-06-09 21:56:29

标签: javascript jquery iframe

我有两个窗户。

一个父亲,第二个是iframe。当在iframe内部单击链接时,我能够在父窗口中生成元素,但只能影响某些内容。

我可以毫无问题地添加Class,但是当我想触发一次点击时,它将无法正常工作。

以下是添加类的工作代码:

父窗口:

<a href="#/June-2013" id="page1">Name1</a>
<a href="#/Cover" id="page2">Name2</a>
<a href="#/Editorial-Cover" id="page3">Name3</a>
<a href="#/Webcast" id="page4">Name4</a>
<a href="#/Intuit" id="page5">Name5</a>

I帧:

<div class="page5">link</div>

<script>
  $('.page5').click(function(){
     parent.top.$('#page5').addClass('classadded');
  });
</script>

但是当我尝试

<script>
  $('.page5').click(function(){
     parent.top.$('#page5').trigger('click');
  });
</script>
没有任何反应。

有什么想法吗?

由于

PS:他们俩都在同一个域名

2 个答案:

答案 0 :(得分:1)

不是jQuery的人,但基于我在http://jsfiddle.net/kB3Jz/4/的测试,即使在同一帧内,触发器只能处理jQuery附加事件,而不是默认点击或直接DOM附加事件。 ..

HTML:

<a href="http://example.com" id="page5">Name5</a>
<div class="page5">link</div>

JS:

$('.page5').click(function(){
    $('#page5').trigger('click');
});
$('#page5')[0].addEventListener('click', function () {
    alert('hello'); // Won't be triggered
});

$('#page5').click(function () {
    alert('hello2'); // Will be triggered
});

docs确实说:

  

“对于普通对象和窗口以外的DOM对象,如果是   触发的事件名称与对象上的属性名称匹配,   如果没有事件,jQuery将尝试将该属性作为方法调用   handler调用event.preventDefault()“

...所以似乎触发器应该工作(因为点击DOM对象通过$('#page5')[0].click()工作),但由于某种原因,它没有 - 也许只是jQuery的表达“尝试调用“由于某种原因失败了......

因此我建议在#page5上通过jQuery添加的点击处理程序更改window.location

答案 1 :(得分:0)

我会尝试

parent.location = parent.top.$('#page5').attr('href');

parent.location = parent.$('#page5').attr('href');