Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.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 单击父窗口中的元素_Javascript_Jquery_Iframe - Fatal编程技术网

Javascript 单击父窗口中的元素

Javascript 单击父窗口中的元素,javascript,jquery,iframe,Javascript,Jquery,Iframe,我有两扇窗户 一个父对象和第二个父对象是iframe。当在iframe内部单击链接时,我可以影响父窗口中的元素,但只能影响某些内容 我可以毫无问题地添加类,但是当我想触发一次点击时,它就不起作用了 以下是添加类的工作代码: 父窗口: <a href="#/June-2013" id="page1">Name1</a> <a href="#/Cover" id="page2">Name2</a> <a href="#/Editorial-Cov

我有两扇窗户

一个父对象和第二个父对象是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>

Iframe:

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

<script>
  $('.page5').click(function(){
     parent.top.$('#page5').addClass('classadded');
  });
</script>
链接
$('.page5')。单击(函数(){
parent.top.$('#page5').addClass('classadded');
});
但是当我尝试的时候

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

$('.page5')。单击(函数(){
parent.top.$('#page5')。触发器('click');
});
什么也没发生

有什么想法吗

谢谢

一月

PS:它们都在同一个域上

我会试试

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


不是jQuery的家伙,但根据我在的测试,即使在同一帧中,trigger也只处理jQuery附加的事件,而不是默认的click或直接DOM附加的事件

HTML:

发言人说:

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

…因此触发器似乎应该可以工作(因为通过
$('#page5')[0]单击DOM对象。click()
可以工作),但由于某种原因,它不能工作--可能只是因为jQuery表示的“尝试调用”由于某种原因失败了


因此,我建议通过jQuery在第5页添加的点击处理程序更改
window.location
,您是否尝试过
window.parent.top.$('#page5').trigger('click')?您确定在第5页上有一个点击处理程序(通过jQuery附加)吗?@Joe,尝试过,没有work@Stejsi-尝试Brett的答案并使用
parent.top.$('#page5')[0]。单击()
@Joe,非常感谢你的帮助。此方法-parent.top.$('#page5')[0]。单击();成功。你确定没有单击链接吗?我在Firefox中测试,u?我在Firefox和chromeBrett中测试,我可以得到警报消息(与addClass相同),但我需要在父窗口中触发点击链接。可能另一种方法是使用jquery,根据我正在添加的类parent.top.$('#page5')[0],在父窗口中触发单击;这种方法奏效了。
parent.location = parent.$('#page5').attr('href');
<a href="http://example.com" id="page5">Name5</a>
<div class="page5">link</div>
$('.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
});