jquery 函数中的选择器

Selector in jquery on function

对于多个 raphael (svg) 节点,我定义了一个 css class。所有这些节点都可以参考这个class来选择,例如:

console.log($(':raph(nodecss)'));

给出了所有节点的概览。供您参考,节点是动态创建的

现在我想使用以下代码在事件处理程序上定义一个 (jquery):

$(document).on("mousedown", SELECTOR, (function(evt) {
console.log(this);
}).bind(this));;

其中应该给出被点击的实际节点。对于选择器,我使用了以下选项:

  1. $(':raph(nodecss)')
  2. "$(':raph(nodecss)')"
  3. ':raph(nodecss)'

所有都不起作用,原因不同:

  1. Console.log(this)指的是window而不是点击的节点
  2. 未捕获错误:语法错误,无法识别的表达式:$(':raph(nodecss)')
  3. 对于动态创建的节点,点击事件根本不会触发(无响应),对于在页面加载时创建的节点,这有效

应该使用什么作为 on-function 中的选择器,以便在单击节点时触发事件,这会给出已单击的实际节点?

更正式地说,这应该有效:

$(document).on("mousedown", ':raph(nodecss)',
    function(evt) {
        console.log(evt.target);
    }
);

您实际上应该可以使用 this 而不是 evt.target,但是 evt.target 即使函数绑定到错误的对象(例如 window) - 我相信你的第一个案例发生了什么。