Jquery 如何将此脚本转换为$(document).ready构造?

Jquery 如何将此脚本转换为$(document).ready构造?,jquery,Jquery,我对语法有一些问题: 需要在何处以及如何准备关闭?只有在加载页面后才能加载此脚本 function wr_hours(item){ //timeout var sek = item.data("timeout"); var min = Math.floor((sek /60)%60) ;//sec var hour = Math.floor((sek / (60*60)) %24) ;//hr var days = Math.floor(sek /(24*60*60)) ;//days var

我对语法有一些问题: 需要在何处以及如何准备关闭?只有在加载页面后才能加载此脚本

function wr_hours(item){
//timeout
var sek = item.data("timeout");
var min = Math.floor((sek /60)%60) ;//sec
var hour = Math.floor((sek / (60*60)) %24) ;//hr
var days = Math.floor(sek /(24*60*60)) ;//days
var counterWrapper = $("#b-countdown");

if ( min < 10 ){
    min = "0" + min;
}
//CSS       
if ( hour != counterWrapper.data("left") ){
    var hourClass = hour == 0 ? 1 : hour;
    counterWrapper.attr("class", "left-" + hourClass).attr("data-left", hourClass)
}

var time_wr = hour + ":" + min;
item.html(time_wr);
item.data("timeout", (sek - 1) > 0 ? sek - 1 : 24 * 60 * 60);
}
setInterval(function(){
    $(".deadline").each(function(){ wr_hours($(this));})
}, 1000);

你的意思是:

$(document).ready(function() {
    function wr_hours(item){
        //timeout
        var sek = item.data("timeout");
        var min = Math.floor((sek /60)%60) ;//sec
        var hour = Math.floor((sek / (60*60)) %24) ;//hr
        var days = Math.floor(sek /(24*60*60)) ;//days
        var counterWrapper = $("#b-countdown");

        if ( min < 10 ){
            min = "0" + min;
        }
        //CSS       
        if ( hour != counterWrapper.data("left") ){
            var hourClass = hour == 0 ? 1 : hour;
            counterWrapper.attr("class", "left-" + hourClass).attr("data-left", hourClass)
        }

        var time_wr = hour + ":" + min;
        item.html(time_wr);
        item.data("timeout", (sek - 1) > 0 ? sek - 1 : 24 * 60 * 60);
    } setInterval(function(){
        $(".deadline").each(function(){ wr_hours($(this));})
    }, 1000);
});

但是,由于您在setInterval函数中调用函数wr_hours,另一种方法是将setInterval部分放在$document.readyfunction{…}中

JQuery ready函数可以这样使用:

$(document).ready(function () {
/* ADD YOUR CODE HERE */
});
在您的示例中:

function wr_hours(item){
    //timeout
    var sek = item.data("timeout");
    var min = Math.floor((sek /60)%60) ;//sec
    var hour = Math.floor((sek / (60*60)) %24) ;//hr
    var days = Math.floor(sek /(24*60*60)) ;//days
    var counterWrapper = $("#b-countdown");

    if ( min < 10 ){
        min = "0" + min;
    }
    //CSS       
    if ( hour != counterWrapper.data("left") ){
        var hourClass = hour == 0 ? 1 : hour;
        counterWrapper.attr("class", "left-" + hourClass).attr("data-left", hourClass)
    }

    var time_wr = hour + ":" + min;
    item.html(time_wr);
    item.data("timeout", (sek - 1) > 0 ? sek - 1 : 24 * 60 * 60);
}
$(document).ready(function() {
    setInterval(function(){
        $(".deadline").each(function(){ wr_hours($(this));})
    }, 1000);
});

仅将setInterval部分包装在doc.ready中,如Matt所述。