Событие jQuery "после щелчка"

У меня есть список ссылок, которые открываются в 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 после щелчка ссылки. В частности, мне нужно вызвать функцию, которая проверяет атрибут frame src и обновляет div. Если я сделаю a:

$("#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
});

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

Ответ 1

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

Ответ 2

$("#frameTrigger a").click(function(){
    console.log( $(this).attr("href") );
});

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

Ответ 3

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

$("#someElement").bind('click', function(event) {
    event.preventDefault();
    $($("#frameTrigger a:eq(1)").attr('target')).attr('src', $("#frameTrigger a:eq(1)").attr('href'));
});