将硬编码的JQuery转换为插件 - 语法问题

时间:2012-06-07 15:09:00

标签: javascript jquery function jquery-plugins syntax

我有一些JQuery加载了许多元素中的一个,例如,在列表项的多行中的无序列表中有一个<li>

  this.randomtip = function(){
        var length = $("#tips li").length;
        var ran = Math.floor(Math.random()*length) + 1;
        $("#tips li:nth-child(" + ran + ")").show();
    };

    $(document).ready(function(){
        randomtip();
    });

但是,我认为将它转换为JQuery插件以使其更加全局化使用会更好,因此我可以在需要时调用它来处理不同的元素和用例。

我意识到我需要取出特定的选择器并将它们转换为$(this),可能是基于查看其他JQuery插件的一些代码。

这是我到目前为止所得到的很多语法错误。我已经尝试了很多不同的迭代同样的事情几个小时但没有快乐:

(function ( $ ) {

    $.fn.randomtip = function () {

    var length = $(this).length;
    var ran = Math.floor(Math.random()*length) + 1;
    $(this).find (':nth-child' '+ ran + ')").show();


})(jQuery);

我在哪里得到语法错误是我所拥有的:

$(this).find (':nth-child' '+ ran + ')").show();

2 个答案:

答案 0 :(得分:2)

$(this).find()行上有一些拼写错误。以下是正确的版本:

(function ( $ ) {
    $.fn.randomtip = function () {
    var length = $(this).length;
    var ran = Math.floor(Math.random() * length) + 1;
    $(this).find (':nth-child('+ ran + ')').show();
})(jQuery);

答案 1 :(得分:0)

中存在语法问题
$(this).find (':nth-child' '+ ran + ')").show();

也许你想要这个?

$(this).find (':nth-child(' + ran + ')').show();