Rumah > hujung hadapan web > tutorial js > 详解jQuery 事件的命名空间

详解jQuery 事件的命名空间

零下一度
Lepaskan: 2017-06-17 15:36:05
asal
924 orang telah melayarinya

用 jquery 绑定和解绑事件监听器都是非常简单的。但是当你为一个元素的一个事件绑定了多个监听器时,怎样精确地解绑其中一个监听器?我们需要了解一下事件的命名空间

看下面这段代码:

$(“#element”)
    .on(“click”, doSomething)
    .on(“click”, doSomethingElse);
Salin selepas log masuk

像上面这样绑定事件监听器,当元素被点击时,doSomething 和 doSomethingElse 这两个监听器都会被触发。这是使用 jQuery 的一个便利之处,可以随时给元素的同一个事件添加不同的监听器。不像用 onclick 那样,新的监听器会覆盖旧的。

如果你想解绑其中一个监听器,比如 doSomething,怎么做呢?

是这样吗?

$(“#element”).off(“click”);
Salin selepas log masuk

注意!上面这行代码会把元素的 click 事件的所有监听器全部解绑,而这并不是我们要的结果。

幸运的是 jQuery 的 .off() 方法可以接受第二个参数,就像 .on() 一样。只要把监听器函数的名字作为第二个参数传入 .off() 方法,就能够解绑指定的监听器。

$(“#element”).off(“click”, doSomething);
Salin selepas log masuk

但是如果你不知道这个函数的名字,或者你用的是匿名函数

$(“#element”)
    .on(“click”, function() {
        console.log(“doSomething”);
    });
Salin selepas log masuk

怎样才能精确地解绑某一个 click 事件监听器呢?该了解一下 jQuery 的事件命名空间了!

先上代码:

$(“#element”)
    .on(“click.myNamespace”, function() {
        console.log(“doSomething”);
    });
Salin selepas log masuk

这里不只是把 click 事件作为参数传入 .on() 方法,而是给 click 事件指定了一个命名空间,然后监听了这个命名空间里的 click 事件。此时,即使监听器是匿名函数,实际上它也是“有名”的了。现在你可以像下面这样解绑某一个具体的命名空间里的事件监听器了。

$(“#element”).off(“click.myNamespace”);
Salin selepas log masuk

这是 jQuery 为我们提供的又一个方便而强大的功能,它的内部实现肯定很有意思!

Atas ialah kandungan terperinci 详解jQuery 事件的命名空间. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan