Javascript 单击父窗口中的元素
我有两扇窗户 一个父对象和第二个父对象是iframe。当在iframe内部单击链接时,我可以影响父窗口中的元素,但只能影响某些内容 我可以毫无问题地添加类,但是当我想触发一次点击时,它就不起作用了 以下是添加类的工作代码: 父窗口: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
<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
});