javascript - jQuery 事件 : disable namespaces (or use an event with a period in the name)

标签 javascript jquery

我正在尝试使用 .one() 绑定(bind)到名称类似于 something.else.thing 的事件,我无法更改该事件名称,因为它来自外部库。

问题是由于句点的原因,jQuery 为事件 something 创建命名空间、elsething,而不是创建名为 something.else.thing.

有什么办法可以解决这个问题吗?

谢谢

编辑:

一些示例代码:

$(document).on('appfeel.cordova.admob.onAdLoaded', function() {
    console.log('Does nothing');
});

document.addEventListener('appfeel.cordova.admob.onAdLoaded', function() {
    console.log('Works');
});

最佳答案

我不认为你可以禁用 jQuery 事件命名空间,所以如果你想在带有点的事件上使用 one ,你可以在纯 JS 中执行此操作:

fiddle :http://jsfiddle.net/AtheistP3ace/8z6ewwnv/1/

HTML:

<div id="test"></div>
<button id="mybutton">Run event again</button>

JS:

var test = document.getElementById('test');
var button = document.getElementById('mybutton');
var event = new Event('something.else.blah');

function onWeirdEvent () {
    test.removeEventListener('something.else.blah', onWeirdEvent);
    alert('did it');
}

test.addEventListener('something.else.blah', onWeirdEvent, false);

test.dispatchEvent(event);

button.addEventListener('click', function (e) {
    test.dispatchEvent(event);
}, false);

本质上是一样的。如果您真的希望一切看起来像 jQuery,请创建一个自定义插件:

fiddle :http://jsfiddle.net/AtheistP3ace/8z6ewwnv/2/

$.fn.customOne = function (eventString, fn) {
    var self = this[0];
    var origFn = fn;
    fn = function (event) {
        self.removeEventListener(eventString, fn);
        return origFn.apply(self);
    };
    self.addEventListener(eventString, fn, false);
};

$.fn.customTrigger = function (eventString) {
    var event = new Event(eventString);
    var self = this[0];
    self.dispatchEvent(event);
}

$('#test').customOne('something.else.blah', function () {
    alert('did it');
});
$('#test').customTrigger('something.else.blah');
$('#test').customTrigger('something.else.blah');

关于javascript - jQuery 事件 : disable namespaces (or use an event with a period in the name),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33901198/

相关文章:

javascript - 3 显示div jquery的超时间隔

javascript - 界面菜单,如果打开并且用户在菜单外单击则关闭

javascript - 无法刷新或重绘 Google map

javascript - 如何在另一个文件中使用变量?

php - 打开外部 URL 并继续使用我自己的网页

javascript - Mongoose - TypeError : object is not a function

javascript - CSS/jQuery 改进的页面流

jquery - 如何获取jqgrid中选定行的行id

javascript - jQuery Cycle - IE 不立即加载图像(发生闪烁)

java - 从 Spring 应用程序运行 PhantomJS 来获取网页缩略图