2015-11-23 49 views
0

您能否請告知如何使用jquery api禁用/啓用點擊功能。基於我向用戶展示體育網頁的角色。使用jquery禁用和啓用點擊事件

使用以下引導代碼進行UI。

<div id="viewtest" class="btn-group btn-group-sm"> 
    <button id="C" class="btn btn-default" title="Cricket">Cricket</button> 
    <button id="B" class="btn btn-default" autofocus="autofocus" autofocus title="BaseBall">BaseBall</button> 
    <button id="T" class="btn btn-default disabled" title="Tennis">Tennis</button> 
    <button id="G" class="btn btn-default disabled " title="Monthly">Golf</button> 
</div> 

我正在使用下面的函數來處理上面的按鈕單擊事件。

$(".btn-group > .btn").click(function() { 
    $(this).addClass("btn-primary").siblings().removeClass("btn-primary"); 
    viewtype = this.id; 
    $(this).blur(); 
    showPage(); 
}); 

對於一些標準,我禁止使用以下功能click事件

var disableOptionsTabs=["C","T"]; 
     disableButtons(disableOptionsTabs); 

function disableButtons(mybuttons) { 
    $.each(mybuttons, function (key, value) { 
     $("#" + value).off(); 
    }); 
} 

請指教如何啓用單擊事件?或者如何綁定按鈕的點擊功能。

我正在使用下面的方法,根據給定的建議綁定指定按鈕的點擊事件。但它不起作用。

var enableOptionsTabs=["C","T"]; 
      enableButtons(enableOptionsTabs); 
    function enableButtons(mybuttons){ 
      $.each(mybuttons, function(key,value) 
      { $("#" + value).on("click",myOnClick); } 
     ); 

    } 

回答

2

如果您打算不斷刪除並添加事件,我會將點擊功能移動到您可以重複使用的功能。

function myOnClick() { 
    $(this).addClass("btn-primary").siblings().removeClass("btn-primary"); 
    viewtype = this.id; 
    $(this).blur(); 
    showPage(); 
} 

然後你就可以將它像這樣:

$(".btn-group > .btn").on('click', myOnClick); 

,並刪除它像這樣:

$(".btn-group > .btn").off('click'); 

對於禁用循環,如果mybuttons是元素的列表,你可以只這樣做:

function disableButtons(mybuttons) { 
    $.each(mybuttons, function() { 
     $(this).off('click'); 
    }); 
} 

你可以因爲jQuery如何調用你把它傳遞給each的函數。它爲每個元素設置該函數的上下文,因此您可以使用this來引用它。

+0

感謝您的建議,我們可以不需要的功能? –

+0

確保你可以持續使用匿名函數。 – AtheistP3ace

+0

我們是否需要將當前對象即this()傳遞給myOnclick函數? –

0

我從下面的鏈接答案,

Best way to disable button in Twitter's Bootstrap

function disableButtons(mybuttons){ 
      $.each(mybuttons, function(key,value) 
     {   $("#" + value).prop('disabled', true)  } 
    ); 

    } 
    function enableButtons(mybuttons){ 
     $.each(mybuttons, function(key,value) 
     { 

     $("#" + value).prop('disabled', false); 
     $("#" + value).removeClass("disabled"); 

     } 
    ); 

    }