0

我有一些 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();
4

2 回答 2

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);
于 2012-06-07T15:11:52.160 回答
0

存在语法问题

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

也许你想要这个?

$(this).find (':nth-child(' + ran + ')').show();
于 2012-06-07T15:09:58.133 回答