【问题标题】:jquery.address: $.address.change() runs twice when using $.address.queryString()jquery.address: $.address.change() 在使用 $.address.queryString() 时运行两次
【发布时间】:2011-07-12 21:04:52
【问题描述】:

$.address.change() 在使用 $.address.queryString() 时会运行两次

如果有一个网址:

www.example.com

然后我运行以下代码:

$.address.change(function(event)
{    
    if(event.parameters['user_id'])
    {
        alert(event.parameters['user_id'])
    }       
});
$.address.queryString('user_id=902715614&user_name=James');

Live example

它会提醒 user_id 两次

但是,它不应该只警告一次吗?

【问题讨论】:

    标签: javascript jquery jquery-address


    【解决方案1】:

    它可能会在页面加载时发出警报(地址更改...对吗?),然后在您更改地址时再次发出警报。

    【讨论】:

    • 这似乎是最可能的解释。如果文档这么说会很好,但它们非常模糊。
    • 是的,$.address.change() 确实在页面加载时运行,这就是为什么我有一个 if 语句来检查 url 中是否有 'user_id' 参数。如果它确实存在,那么它应该发出警报。但是,当我第一次加载页面时,只有在脚本运行之后,url 中才存在“user_id”参数
    • 你应该提醒 event.parameters['user_id'] 看看你得到了什么
    • 我注意到如果我将 $.address.queryString() 放在 $(document).ready() 函数之外,它只会加载一次。这是有道理的,因为 $(document).ready() 在页面加载之前加载了所有内容。所以当页面确实加载时。网址已设置为 [user_id=902715614&user_name=James]
    【解决方案2】:

    如果没有更多上下文,很难判断这是否有意义......但你是否应该在 DOM 准备好之后调用你的函数:

    $(document).ready(function () {
      $.address.queryString('user_id=902715614&user_name=James');
    });
    

    【讨论】:

    • 是的,我正在使用 $(document).ready()。我会将其添加到我的问题中以解决问题
    猜你喜欢
    • 1970-01-01
    • 2018-08-04
    • 1970-01-01
    • 2021-03-04
    • 1970-01-01
    • 2012-04-24
    • 2018-06-25
    • 2015-11-03
    • 2017-09-24
    相关资源
    最近更新 更多