如何重新绑定已删除的锚标记事件

时间:2014-09-01 23:15:33

标签: javascript jquery html

我根据条件取消绑定事件,一旦条件为真我在条件为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>

** Fiddler Link:**

//

http://jsfiddle.net/md5psv28/

2 个答案:

答案 0 :(得分:1)

你有这个:

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

在这里,在on方法的第二个参数中,&#39;&#39; .add&#39;&#39;不是有效的function/handler。您需要将function/handler传递给您bind,而您已通过class

你可以这样试试:

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

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

Updated Demo.

答案 1 :(得分: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