将变量传递给倒计时插件

时间:2013-05-22 20:20:27

标签: jquery countdown jsfiddle

如何将data-countdown属性中包含的信息传递给此jQuery函数?我在http://jsfiddle.net/G4qLE/设置了一个测试,它在硬编码时有效,但在用一个警告与硬编码相同的信息的变量替换时中断。我是jQuery的新手,不知道我做错了什么,非常感谢任何帮助。感谢。

    <div id="counter" data-countdown="-5, 2013, 5 - 1, 27, 00, 00, 00"></div>

    var countdown = jQuery('#counter').data('countdown');
    //alert(countdown);// alerts -5, 2013, 5 - 1, 27, 00, 00, 00

    jQuery('#counter').countdown({
        until: jQuery.countdown.UTCDate(-5, 2013, 5 - 1, 27, 00, 00, 00),//breaks when replaced with countdown
        compact: true, 
        alwaysExpire: true, 
        expiryText: 'Too Late!'
    });

3 个答案:

答案 0 :(得分:1)

UTCDate想要一个数字参数列表;你从数据倒计时得到一个字符串并传递它。听起来你需要解析各个值。

答案 1 :(得分:1)

您必须解决的一件事是将5 - 1更改为4。 (否则您将获得Invaid Date,因为参数'5 - 1'是一个字符串而不会是4

<div id="counter" data-countdown="-5, 2013, 4, 27, 00, 00, 00"></div>

然后你可以做(​​正如 @Paulpro 指出的那样):

jQuery('#counter').countdown({
    until: jQuery.countdown.UTCDate.apply(jQuery.countdown, countdown.split(/\s*,\s*/)),
    compact: true, 
    alwaysExpire: true, 
    expiryText: 'Too Late!'
});

See the working demo.

答案 2 :(得分:0)

正如斯科特所说,UTCDate需要一个参数列表,而不是字符串。您可以使用split将字符串转换为数组,然后apply使用数组值作为参数调用函数。

这应该会给你想要的结果:

jQuery('#counter').countdown({
    until: jQuery.countdown.UTCDate.apply(jQuery.countdown, countdown.split(', ')),
    compact: true, 
    alwaysExpire: true, 
    expiryText: 'Too Late!'
});