$('body').on('click','.anything',function(){})

fan*_*ncy 16 html javascript jquery

$('body').on('click', '.anything', function() {
    //code
});
Run Code Online (Sandbox Code Playgroud)

现在不起作用,我无法弄清楚原因.我能够锚定其他任何东西,比如说我只是#wrap在里面扔了一个div body.然后我就能做到

$('#wrap').on('click', '.anything', function() {
    //code
});
Run Code Online (Sandbox Code Playgroud)

对于我想要的任何元素.

知道我可以做什么来禁用身体元素的这种能力?

谢谢!

小智 36

你应该用$(document).它是文档中任何单击事件的函数触发器.然后在里面你可以使用jquery on("click","body *",somefunction),其中第二个参数指定要定位的特定元素.在这种情况下,身体内的每个元素.

$(document).on('click','body *',function(){
    //  $(this) = your current element that clicked.
    // additional code
});
Run Code Online (Sandbox Code Playgroud)

  • 请考虑编辑您的帖子,以添加有关您的代码的功能以及解决问题的原因的更多说明.一个主要只包含代码的答案(即使它正在工作)通常不会帮助OP理解他们的问题.如果只是猜测,也建议您不要发布答案.一个好的答案将有一个合理的理由,为什么它可以解决OP的问题. (3认同)

LmC*_*LmC -10

如果你想捕获点击一切然后做

$("*").click(function(){
//code here
}
Run Code Online (Sandbox Code Playgroud)

我用它作为选择器:http://api.jquery.com/all-selector/

这用于处理点击:http://api.jquery.com/click/

然后使用http://api.jquery.com/event.preventDefault/

停止正常的点击操作。

  • 这会为 DOM 中的每个元素添加一个处理程序,这对浏览器来说很重。 (8认同)
  • 此外,如果一个元素的深度为 10 层,由于该代码附加到 *所有* 元素,因此它会触发 10 次 - 1 次针对该元素,9 次针对其父元素? (3认同)