Ответ 1
Я предполагаю, что вы получаете старую ценность вместо новой? Вы можете обернуть свою функцию в setTimeout
из 1 мс, чтобы разрешить обновление.
У меня есть список ссылок, которые открываются в 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
});
Я не понимаю, что ожидается.
Я предполагаю, что вы получаете старую ценность вместо новой? Вы можете обернуть свою функцию в setTimeout
из 1 мс, чтобы разрешить обновление.
$("#frameTrigger a").click(function(){
console.log( $(this).attr("href") );
});
Вам нужен первый селектор для работы с кликами для ссылок. Кроме того, я думаю, что у вас был синтаксис для console.log некорректно (хотя я его никогда не использовал). Я изменил его, поэтому, когда вы нажимаете на ссылку, он регистрирует атрибут href ссылки. Надеюсь, это поможет.
Если у вас возникли проблемы с завершением всей функции щелчка при вызове клика через jQuery.click() - я знаю, что это не идеально, но, возможно, вам просто нужно, чтобы jQuery явно заполнил последовательность, которая должна быть выполнена при нажатии, Что-то вроде:
$("#someElement").bind('click', function(event) {
event.preventDefault();
$($("#frameTrigger a:eq(1)").attr('target')).attr('src', $("#frameTrigger a:eq(1)").attr('href'));
});