jQuery событие "после нажатия" - PullRequest
11 голосов
/ 16 апреля 2011

У меня есть список ссылок, которые открываются в iframe, например:

<ul id="frameTrigger">
    <li><a target="iframe1" href="aaa.html"><img src="aaa.jpg"></a></li>
    <li><a target="iframe1" href="bbb.html"><img src="bbb.jpg"></a></li>
    <li><a target="iframe1" href="ccc.html"><img src="ccc.jpg"></a></li>
</ul>

Мне нужно обновить еще один div после ссылка нажата. В частности, мне нужно вызвать функцию, которая проверяет атрибут src фрейма и обновляет div. Если я сделаю:

$("#frameTrigger a").click(function() {
    var iframe = $("iframe[name=iframe1]").get(0);
    console.log(iframe.contentWindow.location.href);
    // the problem here is that that the iframe.window.location will
    // change AFTER this function returns
});

Я не понимаю, что ожидается.

Ответы [ 3 ]

9 голосов
/ 16 апреля 2011

Полагаю, вы получаете старое значение вместо нового? Вы можете обернуть свою функцию в setTimeout из 1 мс, чтобы позволить обновлению пройти.

2 голосов
/ 16 апреля 2011
$("#frameTrigger a").click(function(){
    console.log( $(this).attr("href") );
});

Вам нужен первый селектор для работы с кликами по ссылкам. Кроме того, я думаю, что у вас был неправильный синтаксис для console.log (хотя я никогда не использовал его). Я изменил его, чтобы при нажатии на ссылку регистрировался атрибут href этой ссылки. Надеюсь, это поможет.

0 голосов
/ 20 января 2012

Если у вас возникают проблемы с завершением всей функции клика при вызове клика через jQuery .click () - я знаю, что это не идеально, но - возможно, вам просто нужно, чтобы jQuery явно завершил последовательность, которая должна выполняться при нажатии,Что-то вроде:

$("#someElement").bind('click', function(event) {
    event.preventDefault();
    $($("#frameTrigger a:eq(1)").attr('target')).attr('src', $("#frameTrigger a:eq(1)").attr('href'));
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...