2013-06-09 4 views
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> 

Iframe:

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

ничего не происходит.

Любые идеи?

Благодаря

Jan

PS: их обоих на том же домене

+0

Вы пробовали 'window.parent.top. $ ('# Page5'). Trigger ('click');'? – Joe

+0

Уверены, что у вас есть обработчик кликов (прикрепленный через jQuery) на странице # 5? –

+0

@Joe, попробовал, не работал – Stejsi

ответ

1

не парень JQuery, но база d на моем тестировании на 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 действительно говорят:

«Для обоих простых объектов и D ОМ объекты, кроме окна, если срабатывает название события совпадает с именем свойства на объекте, JQuery попытается вызвать свойство как метод если обработчик события не вызывает event.preventDefault()»

... так что кажется, что триггер должен работать (так как нажатие на объект DOM через $('#page5')[0].click() работает), но по какой-то причине это не так - может быть, просто потому, что выраженная «попытка вызвать» jQuery «по какой-то причине не сработала» ...

Я предлагаю изменить window.location с помощью обработчика jQuery с добавлением на # странице5

+0

Вы уверены, что не щелкаете по ссылке? Я тестирую в Firefox, и? –

+0

Я тестирую как firefox, так и chrome. – Stejsi

+0

Бретт, я могу получить предупреждающее сообщение (это то же самое, что и с addClass), но мне нужно вызвать щелчок по ссылке в родительском окне. Возможно, другой подход состоял бы в том, чтобы иметь jquery, который запускает щелчок в родительском окне на основе класса, я добавляю – Stejsi

0

Я хотел бы попробовать

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

или

parent.location = parent.$('#page5').attr('href'); 
Смежные вопросы