2012-03-29 364 views
3

我有兩個jquery的,我跑,我想結合他們兩個在同一行。 這是我想要做的一個例子。現在兩個jquery函數在同一時間

​$(function(){ 
    $('input').each(function(){ 
     if ($(this).is(':checked')) { 
      $(this).after('this is checked'); 
     } 
    }); 
    $('input').click(function(){ 
     if ($(this).is(':checked')) { 
      $(this).after('this is checked'); 
     } 
    }); 
});​ 

,這兩個函數做同樣的事情,一個是檢查是否有從後端被檢查的任何輸入執行,另一位剛剛來響應用戶點擊。

我想如果我能在這樣的聲明將它們結合起來,

$('input').bind('each click'); 

,但我注意到,即使這會不會各項工作。 任何想法?

謝謝!

回答

1

僅舉功能..

function handler() { 
    if ($(this).is(':checked')) { 
     $(this).after('this is checked'); 
    } 
} 

然後在這兩種情況下,它使用:

$(function(){ 
    $('input').each(handler); 
    $('input').click(handler); 
});​ 
+0

這個很好用!謝謝 !! – 2012-03-29 19:03:56

1

您不能綁定each方法,因爲它不是一個事件。

分配功能給一個變量,這樣就可以重複使用它:

​$(function(){ 

    var markChecked = function() { 
    if ($(this).is(':checked')) { 
     $(this).after('this is checked'); 
    } 
    }; 

    $('input').each(markChecked).click(markChecked); 
});​ 

有時用來爲每個元素強制初始檢查上觸發click事件的另一種方法:

​$(function(){ 
    $('input').click(function() { 
    if ($(this).is(':checked')) { 
     $(this).after('this is checked'); 
    } 
    }).click(); 
});​ 

這當然假設觸發點擊事件沒有任何副作用。如果你已經綁定了另一個點擊事件處理程序到任何元素,這將導致該事件處理程序也被調用。

+0

這太偉大工程!謝謝 !!! – 2012-03-29 19:04:08