如何确认一个元素是jQuery中它的类的第一个?
我需要知道被点击的元素是否是同类元素中的第一个,因为如果是,我需要取消选中复选框并重新运行一个防止输入匹配的函数;然而,我认为看似简单的事情显然不是那么简单。我认为这很简单:如何确认一个元素是jQuery中它的类的第一个?,jquery,Jquery,我需要知道被点击的元素是否是同类元素中的第一个,因为如果是,我需要取消选中复选框并重新运行一个防止输入匹配的函数;然而,我认为看似简单的事情显然不是那么简单。我认为这很简单: $(".remove-box").unbind().click(function (e) { e.preventDefault(); if($(this) == $(".remove-box :first")) { //uncheck tickbox and remove matching
$(".remove-box").unbind().click(function (e) {
e.preventDefault();
if($(this) == $(".remove-box :first")) {
//uncheck tickbox and remove matching details class
}
removeDelegate($(this));
});
有人对我如何完成这项工作有什么建议吗?我想你指的是它的类型,即标签。在这种情况下:
if ($(this).is(':first-of-type)) {
如果你指的是某个类的第一个类,那么它会涉及更多的内容。整个文档中某个类的第一个?在当前容器中?假设后者:
if ($(this).prevAll('.className').length) {
您只需执行$(“.remove box”).first()代码>$(“.remove box”)
将获取该类的所有元素,.first()
将获取这些选定元素中的第一个
编辑:顺便说一句,对于当前主要的桌面浏览器,请使用选择器,后跟选择器中的.first()
,而不是选择器中的:first
。使用该功能要快得多,您可以在该网站上运行测试以检查某些选择器的性能
$(".remove-box").unbind().click(function (e) {
e.preventDefault();
var $firstRemBox=$(this).parent().find(".remove-box").first();
if($(this) == $firstRemBox) {
//uncheck tickbox and remove matching details class
}
removeDelegate($(this));
});
但我认为这样更好:
$(".remove-box").off().one('click',function(e){
e.preventDefault();
var $firstRemBox=$(this).parent().find(".remove-box").first();
if($(this) == $firstRemBox) {
//uncheck tickbox and remove matching details class
}
});
值得注意的是,:类型的第一个
只对兄弟姐妹有效。“选择同一元素名称的同级中第一个元素”是。将层次选择器应用于除平面节点列表之外的任何对象都是没有逻辑意义的。。。事实上,我完全不同意这一说法,因为它取决于文档的结构和正在寻找的内容(但不是寻找更多细节的地方,足以让我们有不同的看法并值得添加警告):)您是否尝试过:$(“.remove box:first”)
(前面没有空格:first)我认为@freedomn-m是正确的我尝试过,但它的评估结果仍然是错误的。我用:console.log($(this))将这两个日志都记录到控制台;log($(“.remove box”).first()
和它们在字面上是相同的,除了$(this)
引用在记录时没有prevObject
。这是导致评估失败的原因吗?如果是这样,我如何更改我的条件?@A.Appleby您是否可以使用一些html进行更新,以便我可以查看它?下面的标记答案该值仍然为false,但您的“删除”框是一个复选框?它是一个按钮-我需要取消选中的复选框在此上下文中是无关的