1

如何将 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!'
    });
4

3 回答 3

1

UTCDate 想要一个数字参数列表;你从 data-countdown 得到一个字符串并传递它。听起来您需要解析各个值。

于 2013-05-22T20:29:34.350 回答
1

您必须解决的一件事是更改5 - 14. (否则你会得到 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!'
});

请参阅工作演示。

于 2013-05-22T20:39:25.860 回答
0

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

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

jQuery('#counter').countdown({
    until: jQuery.countdown.UTCDate.apply(jQuery.countdown, countdown.split(', ')),
    compact: true, 
    alwaysExpire: true, 
    expiryText: 'Too Late!'
});
于 2013-05-22T20:32:46.290 回答