jquery - 确定单击的元素是否在特定 div 内

标签 jquery event-delegation

我有一系列带有“addedelement”类的 div,它们是动态添加的。 在所有这些层中,有更多嵌套的 div,其中一个包含一些带有附加事件的图像。当我单击其中一张图像时,我想知道它是否位于这些 div 的最后一个内:

if($(this).is('div.addedelement:last div.contextmenu img.up'))
{
    alert('Ok');
}

我不知道为什么,但是这个条件表达式的触发与触发器是否位于最后一个“elementadded”div 内的情况无关。但是如果我尝试将 css 应用于这样的元素:

$('div.addedelement:last div.contextmenu img.up').css('display','none');

它就像一个魅力。 我缺少什么? 有人可以帮助我吗?

最佳答案

一种选择是使用 jQuery index 方法,您可以选择类 .addedelement 的图像的最近父级并将元素传递给 index 方法,如果缓存的 jQuery 对象的长度(-1)等于 jQuery 集合中父元素的索引,则该元素是最后一个。

// define these variables outside of the event handler 
var $a = $('div.addedelement'), len = $a.length - 1; 

// within your event handler
var cur = $(this).closest('div.addedelement').get(0);
if ( $a.index(cur) === len ) {
   // last
}

http://jsfiddle.net/Ga5s9/

但是。如果您只想为最后一个 div 元素中的图像注册一个处理程序,其类为 addedelement,您可以编写:

$('div.addedelement').last().find('img.up').click(function(){
   // last
})

关于jquery - 确定单击的元素是否在特定 div 内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14073620/

相关文章:

javascript - jQuery.on() 是如何工作的?

javascript - 将拖动事件委托(delegate)给其他元素 jQuery

javascript - 单击事件在 JavaScript 中不起作用

jquery - 使用 JSFiddle 时从 javascript 控制台调用 jQuery

javascript - 如何修复此鼠标悬停变换缩放效果(提供动画)

javascript - 如何使用 Angular 检测浏览器后退按钮单击事件?

JavaScript html setter "eats"文本区域内的前导换行符 - 如何克服?

javascript - jQuery 滚动和 anchor 初始位置

jquery-selectors - delegate() 和 live() 方法的背后是什么?

javascript - 使用 vanilla JS 的事件委托(delegate)