2015-11-23 5 views
0

Не могли бы вы сообщить, как отключить/включить функцию click с помощью jquery api. Основываясь на роли, я показываю пользователю спортивную страницу.Отключить и включить событие Click, используя JQuery

Использование ниже кода начальной загрузки для пользовательского интерфейса.

<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(); 
}); 

Для некоторых критериев, я отключить события нажатия, используя ниже функции

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

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

Пожалуйста, посоветуйте, как включить событие щелчка? или как связать функцию щелчка для кнопки.

Я использую метод ниже, привяжите событие click для кнопок-указателей на основе данного совета. но он не работает.

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

Нужно ли передавать текущий объект ie() в функцию 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"); 

     } 
    ); 

    } 
Смежные вопросы