问题 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  点击链接。具体来说,我需要调用一个检查帧的函数 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
});

我没有得到预期的结果。


12063
2018-04-16 08:09


起源

如果链接移动到与您的域名不同的域名,您将无法拉出SRC。 - Khez
$("#frameTrigger") 你错过了#...以防万一 - Rafay
@Khez:你是对的,我现在看到了问题,因此必须修改这个问题。 - Salman A
@ 3nigma:我已经修正了错字,但现在还有另一个问题,我会更新问题。 - Salman A


答案:


我猜你得到旧的价值而不是新的价值?您可能希望将函数包装在一个 setTimeout 1毫秒,以允许更新通过。


9
2018-04-16 08:14



在这种特殊情况下,需要更长的超时(500ms)。 - Salman A


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

您需要第一个选择器来处理链接的点击。另外,我认为你的console.log语法不正确(虽然我从未使用过它)。我更改了它,所以当你点击一个链接时,它会记录链接的href属性。希望这可以帮助。


2
2018-04-16 08:21





如果你在通过jQuery .click()调用点击时完成整个点击功能时遇到麻烦 - 我知道这不是理想的,但是 - 也许你应该让jQuery明确地完成点击时应该执行的序列。就像是:

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

0
2018-01-19 23:15