一个父亲,第二个是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:他们俩都在同一个域名
答案 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');