2012-06-07 29 views
0

我有一些JQuery的是,在一個無序列表加載許多因素之一,例如一個<li>出的列表中的項目多行的這樣:轉換被硬編碼了jQuery插件 - 語法問題

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

您在$(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); 
+0

謝謝,這是偉大的,我需要在最後增加一個左大括號。 –

0

有在

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

也許你想這?

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