Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery,查找触发事件的选择器';s元素_Javascript_Jquery_Node.js_Jquery Selectors - Fatal编程技术网

Javascript jQuery,查找触发事件的选择器';s元素

Javascript jQuery,查找触发事件的选择器';s元素,javascript,jquery,node.js,jquery-selectors,Javascript,Jquery,Node.js,Jquery Selectors,我正在开发一个轻量级的实时应用程序 我们使用jQuery的事件系统在应用程序中的模块之间进行对话。因此,在DOM中进行更改的所有内容都必须通过事件进行更改,这些更改本应影响模块之外的任何内容 这些事件由客户端socket.io实现捕获,该实现要求nodejs socket.io服务器向所有其他客户端广播事件 我的问题: 有没有办法找出触发事件的选择器?所以如果我打电话 $("tag.class").trigger("myevent"); 我能做到 $(document).on("myevent

我正在开发一个轻量级的实时应用程序

我们使用jQuery的事件系统在应用程序中的模块之间进行对话。因此,在DOM中进行更改的所有内容都必须通过事件进行更改,这些更改本应影响模块之外的任何内容

这些事件由客户端socket.io实现捕获,该实现要求nodejs socket.io服务器向所有其他客户端广播事件

我的问题: 有没有办法找出触发事件的选择器?所以如果我打电话

$("tag.class").trigger("myevent");
我能做到

$(document).on("myevent", function() {
    console.log(this.selector)
});
它会打印“tag.class”

这很有趣,因为如果知道用户触发了某个选择上的某个事件,而不是触发了若干元素上的某个事件(这些元素之后可能会随机出现),这将很有趣

我已经阅读了,但我希望能够在应用程序中激发的所有事件上获得选择器


感谢您的时间:)

您最好的选择是随活动发送数据。它也更健壮,因为你有更多的控制权。选择器可能并不漂亮,但数据却很漂亮

$('tag.class').trigger('myevent', ['some', 'param']);

$(document).on('myevent', function(param1, param2) {
    console.log(param1); // "some"
    console.log(param2); // "param"
});
当然,如果您想发送任意多个参数,可以使用“选项”对象,并以如下方式处理:

$('tag.class').trigger('myevent', [{some: 'option', other: 'option'}]);

$(document).on('myevent', function(options) {
    var opts = {
        default: 'option',
        some: 'default',
        other: 'default'
    };
    $.extend(opts, options);

    console.log(opts); // {default: "option", some: "option", other: "option"}
});

从链接的答案中获得灵感,您可以覆盖jQuery
trigger
函数。比如:

$.fn.origTrigger = $.fn.trigger;
$.fn.trigger = function (fn) {
  var selector = this.selector;
  this.origTrigger(function (ev) {
    fn(ev, selector);
  });
};

谢谢但我试图避免在触发时发送构造函数。似乎给每个触发事件的人都增加了负担。我们已经使用可选参数来告诉EventHandler要做什么。这将是很好的,没有包括选择器也有。谢谢!我认为这更符合我希望实现的目标。