【问题标题】:How to undetect/ignore javascript events in a certain html element?如何检测/忽略某个 html 元素中的 javascript 事件?
【发布时间】:2017-01-07 09:26:33
【问题描述】:

我有这行代码$('#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();?请帮忙。非常感谢。

【问题讨论】:

标签: javascript jquery html


【解决方案1】:

当然还有: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 = "";
     }
});

【讨论】:

  • 这种方法与 event.stopImmediatePropagation(); 有什么优势?
  • 为此,您必须在选择器上绑定另一个事件。在这种情况下,您只需要在一个地方工作。您还可以做一件事……更新。
【解决方案2】:

你可以使用jQuery的event.stopImmediatePropagation():

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-08
    • 2018-05-11
    • 2017-10-22
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    • 2014-03-20
    • 2010-11-17
    相关资源
    最近更新 更多