2015-11-23 213 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"); 

     } 
    ); 

    }