2014-09-01 2 views
0

Я отвязываю событие на основе условия, когда условие истинно. Я использую метод jQuery off, когда условие false. Мне нужно привязать событие 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

+0

Обновлено это @Barmar, спасибо за вашу ценную обратную связь :-) –

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

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