2014-01-06 44 views
0

我有一個代碼塊,我想在觸發點擊的不同場景中調用,具體取決於事件是直接還是委託。在不同事件處理程序之間重用代碼

但將代碼更改爲on,它只能部分工作。

我有一個代碼:

$(document).on('click','.selected-option',function(event){ 
//lot of code 

我想用:

$('.selected-option').click(function(event){ //lots of code } 

我想一起使用,如:

if (some condition) 
{ 
    $(document).on('click','.selected-option',function(event){ 
} 
else 
{ 
    $('.selected-option').click(function(event){ 
} 

,並希望使用相同的代碼。

+2

不要這兩條線都附上一個'click'監聽器'.selected,option'?如果是這樣,爲什麼不把條件放在你的函數內? – Trojan

回答

7

你不要使用匿名函數來處理事件。只要寫一個普通函數:

function handleClick(event) { 
    // lots of code 
} 

爲你想要的功能,以儘可能多的事件,然後將其綁定:

if (some condition) { 
    $(document).on('click','.selected-option', handleClick); 
else { 
    $('.selected-option').click(handleClick); 
} 
-1

定義函數,然後做的工作;

var funCalled = function(){ 
    //your detailed actions 
} 

並稱它在不同的條件!

if (some condition) { 
    $(document).on('click','.selected-option',function(event){ 
     funCalled() 
    }) 
} else { 
    $('.selected-option').click(function(event){ 
     funCalled() 
    }); 
} 
-1
var testfunction = function(currentObj){ 
    // your code here 
} 

if (some condition) 
    { 
     $(document).on('click','.selected-option',function(event){ 
      testfunction($(this)); 
     }); 
    } 
else { 
     $('.selected-option').click(function(event){ 
      testfunction($(this)); 
     }); 
    } 
相關問題