jQuery“点击后”事件

时间:2011-04-16 08:09:29

标签: javascript jquery javascript-events

我有一个在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 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

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

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