如何在某个html元素中取消检测/忽略javascript事件?

时间:2017-01-07 09:26:33

标签: javascript jquery html

我有这行代码$('#tbl-purchase-list').on( 'keyup change', 'input[type="text"]',可检测所有input[type="text"]字段的输入。但是,我有一个输入字段,我不想在键盘上输入文本或对其进行任何更改时检测到它。<input type="text" class="form-control purchase-freight-charge" id="purchase-freight-charge" value="" />。有没有一种方法在javascript中忽略某个元素的某些事件?像$("#purchase-freight-charge").ignoreEvents();这样的东西?请帮忙。非常感谢。

2 个答案:

答案 0 :(得分:2)

当然有一个:not()伪选择器:

$('#tbl-purchase-list').on('keyup change', 
                           'input[type="text"]:not(#purchase-freight-charge)', 
                           ...);

它不会在匹配的选择器集中添加目标元素。因此,:not()内的元素不会发生任何事件。

事件也可以这样做:

$('#tbl-purchase-list').on('keyup change', 'input[type="text"]',function(ev){
     if(this.id === "purchase-freight-charge"){
        this.value = "";
     }
});

答案 1 :(得分:1)

您可以使用jQuery&#39; event.stopImmediatePropagation()

$("#purchase-freight-charge").on('keyup change', function( event ) {
    event.stopImmediatePropagation();
});

// Future event bindings won't be executed for #purchase-freight-charge
// ...