jQuery代码仅适用于页面刷新

时间:2014-05-19 15:53:29

标签: javascript jquery html css

我有一个简单的jQuery脚本,可以像这样动态更改一个拉动的值:

(function($) {

    $(window).load(function () {
        $(function(){
            var inNum = parseFloat($(".value").text().match(/[\d\.\d]+/i)).toFixed(2);
            $('span.value').text(inNum);
        });
    });
}(jQuery));

但是,该脚本仅在刷新页面时有效。我尝试过使用

$(document.body).ready(function() {

但仍然没有运气。脚本需要在其他两个脚本完成后运行,我认为这可能会导致问题,但刷新始终可以解决问题。有没有其他原因可以解释为什么会这样?除了使用.load?

之外,我可以将脚本设置为在加载其他所有内容后加载

5 个答案:

答案 0 :(得分:1)

试试这个:

$(document).ready(function() {
    var inNum = parseFloat($(".value").text().match(/[\d\.\d]+/i)).toFixed(2);
    $('span.value').text(inNum);
});

当加载DOM时,它会立即执行代码。

答案 1 :(得分:1)

我相信我的答案来得很晚,但这仍然是那些仍然有这个问题的人。在花了两天时间尝试在互联网上发布的所有可能的解决方案都是徒劳的,唯一有帮助的就是采用旧时尚方式

我在按钮上添加了onclick子句。

<a href="#" id="createAccbtn" onclick="handle_creatAccbtn_function()" ....

我知道这可能不是最好的解决方案,但它有效。有一个客户从我的背上,可以寻找更好的解决方案,而没有人在我的脖子上呼吸。

答案 2 :(得分:0)

您的功能可能无法正常工作,因为某些资源(脚本,css或图像)仍在加载,因此仅当您点击刷新导致所有资源停止加载时才会触发load事件。它会导致load事件在实际页面中触发。

你可以使用:

(function($) {
    $(function(){
        var inNum = parseFloat($(".value").text().match(/[\d\.\d]+/i)).toFixed(2);
        $('span.value').text(inNum);
    });
}(jQuery));

jQuery变量仍然映射到函数内的$,并且当DOM准备好时(即使某些资源仍在加载),您的脚本也会被执行。

答案 3 :(得分:0)

尝试将代码放在函数中:

 function TestCall()
{
  var inNum = parseFloat($(".value").text().match(/[\d\.\d]+/i)).toFixed(2);
  $('span.value').text(inNum);
}

在window.onload上调用此函数:

  window.onload=TestCall;

这适用于你的情况。

答案 4 :(得分:0)

我遇到了同样的问题,但是在$(document)里面解决了这个问题。准备只重新加载一次页面。

if(!window.location.hash) {
        window.location = window.location + '#loaded';
        window.location.reload();
    }else{
      //Init stuff here
    }

我更喜欢这种解决方案,而不是添加插件并在各处乱码。避免使用location reload(true); “ true”表示它将清空缓存并导致重复下载流量。