2016-11-27 105 views
0

我想寫一個jquery函數,否則我必須反覆寫一些代碼。如何正確定義jQuery函數

這裏是笏功能是第一:

$(".checkbox-car").click(function(){ 
      $(this).toggleClass('checked-car') 
     }); 

     $(".checkbox-bus").click(function(){ 
      $(this).toggleClass('checked-bus') 
     }); 

而這正是我試圖用我自己的函數來做到:

$.fn.checkedFunction = function(Clicked, Checked){ 
     $(this).click(function(){ 
      console.log('check'); 
      $(Clicked).toggleClass(Checked); 
     }); 
    } 

    $('.checkbox-car').checkedFunction('.checkbox-car','.checked-car'); 

,但我得到了checkedFunction沒有定義的錯誤。

我在做什麼錯在這裏有人可以幫我嗎?

+1

你的代碼看起來幾乎完全是多餘的 - 你只是包裝現有'.toggleClass()'方法並沒有增加額外的功能。 –

+0

您應該看看如何[將函數綁定到jQuery.fn原型](https://api.jquery.com/jquery.fn.extend/)。 –

回答

1

你會得到一個錯誤,checkedFunction沒有被定義,因爲它沒有。 checkedFunction是在$.fn對象中定義的屬性。

要使用您創建的功能,您應該執行 $(".some-element").checkedFunction(...args)

更重要的是,您應該閱讀jQuery文檔。

+0

我編輯我的文章檢查出來 – Sreinieren

+0

你應該刪除Clicked參數。 「this」是選定的jQuery元素。 –

0

就不得不這樣做:

$.fn.checkedFunction = function(Clicked, Checked){ 
     $(this).click(function(){ 
      $(Clicked).toggleClass(Checked); 
     }); 
    } 

    $('.checkbox-car').checkedFunction('.checkbox-car','checked-car'); 
    $('.checkbox-bus').checkedFunction('.checkbox-bus','checked-bus'); 

第二checked-類之前刪除的點