2014-09-01 62 views
0

我解綁定基於條件的事件,一旦條件爲真我在條件爲false時使用jQuery off方法我需要綁定錨事件的click事件。 我試過下面的代碼,但我無法實現它。如何重新綁定錨標記的已移除事件

**代碼:**

$('select').change(function(){ 
    if($(this).val()=='mas'){ 
     alert("inside"); 
    $("#lnk").off('click'); 
    }else 
    { 
     alert('else'); 
     $("#lnk").on('click','.add'); 
    } 
}); 

$("a").on('click',function(){ 
    alert('Iam clciked'); 
}); 

HTML:

<select> 
    <option val=''>Seect</option> 
    <option val='ind'>Ind</option> 
    <option val='mas'>mas</option> 
</select> 
<a href='#' class='add' id='lnk'>Go</a> 

**提琴手鍊接:**

//

http://jsfiddle.net/md5psv28/

回答

1

你有這樣的:

$("#lnk").on('click','.add'); 

在這裏,您on方法的第二個參數,「」。新增「」不是一個有效的function/handler。您需要將function/handler傳遞給您想要的bind,而您已通過class

你可以試試這樣說:

$("a").on('click', addHandler); 

function addHandler(){ 
    alert('Iam clciked'); 
} 

Updated Demo.

+0

那就是他問該怎麼辦。 – Barmar 2014-09-01 23:31:08

+0

更新吧@Barmar,感謝您的寶貴意見:-) – 2014-09-01 23:32:51

1

爲什麼不將函數中的點擊處理程序,最初調用它。

function bindClick() { 
    $("a").off('click').on('click', function() { 
     alert('Clicked.'); 
    }); 
} 
bindClick(); 

然後,當條件不滿足時,只需再次調用該函數重新綁定它。

$('select').change(function() { 
    if ($(this).val() == 'mas') { 
     $("#lnk").off('click'); 
    } else { 
     bindClick(); 
    } 
}); 

Updated Example

+0

在這種情況下,觸發器不是必需的 – Vignesh 2014-09-01 23:30:36

相關問題