0

我有两个窗户。

一个父级和第二个 iframe。当在 iframe 内单击链接时,我可以影响父窗口中的元素,但只能影响某些事情。

我可以毫无问题地添加类,但是当我想触发点击时它就不起作用了。

这是添加类的工作代码:

父窗口:

<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>

框架:

<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:他们都在同一个域

4

2 回答 2

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
});

文档确实说:

"For both plain objects and DOM objects other than window, if a triggered event name matches the name of a property on the object, jQuery will attempt to invoke the property as a method if no event handler calls event.preventDefault()"

...so it would seem trigger should work (since clicking on the DOM object via $('#page5')[0].click() works), but for some reason, it doesn't--maybe it's simply that jQuery's expressed "attempt to invoke" has failed for some reason...

I'd therefore suggest changing window.location via a jQuery-added click handler on #page5

于 2013-06-09T22:11:12.720 回答
0

我会尝试

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

或者

parent.location = parent.$('#page5').attr('href');
于 2013-06-09T22:05:28.913 回答