jQuery onclick必须单击两次以显示弹出窗口,为什么?

时间:2011-05-05 17:01:07

标签: jquery ajax variables

您好我有两个相关的问题,我创建了一个弹出框,在单击链接后出现,但是您必须单击两次才能显示,我不知道为什么?

此外,我可以收集被点击的链接的ID,然后从数据库中检索相应的信息,但是如果我点击另一个链接,它仍会显示第一个链接信息。我认为我需要做的是在盒子关闭时清空id变量但是我又尝试了很多东西,我不知道怎么做?

非常感谢任何帮助,代码如下所示,

<script type="text/javascript">
var myCallback = function(caller){
    var linkID = caller.id; 
    caller.rel ="gb_page_center[1020, 550]";
    caller.href = "species/butterfly.php?linkID="+linkID;
    var calling = caller.href;

    $(document).ready (function() {
        $('.descript').click(function(event) {
            $('#popup').css('display','block');
            $('#popup').empty();
            $('#popup').load(calling);
        })
    });
}
</script>

链接如下:

<span id="11" class="bluebells descript"  title="Bluebells (click me)"  onclick="myCallback(this);" ></span>

谢谢!

3 个答案:

答案 0 :(得分:1)

您正在click()重新绑定函数内的$('.descript').click(...事件。这会导致事件多次触发(绑定次数)。

答案 1 :(得分:1)

您的第一次点击是click()事件的实际绑定,尝试在您的jQuery click中执行所有操作并删除您的范围内的onclick属性。

$(document).ready(function() {
    $('.descript').click(function(event) {
        var linkID = this.id;
        this.rel = "gb_page_center[1020, 550]";
        this.href = "species/butterfly.php?linkID=" + linkID;
        var calling = this.href;
        $('#popup').css('display', 'block');
        $('#popup').empty();
        $('#popup').load(calling);
    });
});

<span id="11" class="bluebells descript"  title="Bluebells (click me)"></span>

<强> Example on jsfiddle

答案 2 :(得分:0)

在你的回调'myCallback'中,你要向span添加另一个click事件监听器。每次连续点击都会引起另一次额外的通话。