Javascript 隐藏已单击的元素,而不是具有相同类的其他元素

Javascript 隐藏已单击的元素,而不是具有相同类的其他元素,javascript,jquery,html,Javascript,Jquery,Html,如果“this class”存在,但父元素与其他元素共享同一个类,我想隐藏一个元素 基本上,HTML是: <div class="mailing-list"> <input type="submit"> </div> <div class="mailing-list"> <input type="submit"> </div> <div class="mailing-list"> <i

如果“this class”存在,但父元素与其他元素共享同一个类,我想隐藏一个元素

基本上,HTML是:

<div class="mailing-list">
   <input type="submit">
</div>

<div class="mailing-list">
   <input type="submit">
</div>

<div class="mailing-list">
   <input type="submit">
</div>

在每个
上循环一次。确认
元素,选择输入(通过对父元素执行操作)并隐藏它

$('.confirm').each(function(){
     $(this).parent().find('input[type="submit"]').hide();
});
添加
.confirm
元素后需要调用此函数,如果在追加
.confirm
时调用hide更好

$('input[type="submit"]').on('submit',function(e){
   e.preventDefault();
   $(this).parent().append('<span class="confirm">Joined</span>');
   $(this).hide();
   //other code here
})

在每个
上循环一次。确认
元素,选择输入(通过对父元素执行操作)并隐藏它

$('.confirm').each(function(){
     $(this).parent().find('input[type="submit"]').hide();
});
添加
.confirm
元素后需要调用此函数,如果在追加
.confirm
时调用hide更好

$('input[type="submit"]').on('submit',function(e){
   e.preventDefault();
   $(this).parent().append('<span class="confirm">Joined</span>');
   $(this).hide();
   //other code here
})

您需要将其绑定到click事件:

$('.maillist>input')。在('click',function()上{
变量$input=$(此),
$parent=$input.parent();//这是邮件列表
$parent.append('Joined');//添加连接的跨距
$input.hide();//隐藏输入
});

您需要将其绑定到单击事件:

$('.maillist>input')。在('click',function()上{
变量$input=$(此),
$parent=$input.parent();//这是邮件列表
$parent.append('Joined');//添加连接的跨距
$input.hide();//隐藏输入
});

隐藏输入元素并将span标记附加到其父类

$('input')。单击(函数(){
$(this.hide();
$(this.parent().append('Joined');
});

隐藏输入元素并将span标记附加到其父类

$('input')。单击(函数(){
$(this.hide();
$(this.parent().append('Joined');
});

除了现有答案外,您还可以使用
:has

要修复原始代码,您需要添加
,以提供:

$("#org-lists").each(function() {
    // this = org-list
    $(this).find(".mailing-list").each(function() {
        // this = mailing-list
        // find if this mailing-list has a confirm (need >0 check)
        if ($(this).find('.confirm').length > 0) {
            // this still = mailing-list
            $(this).find('input[type="submit"]').hide();
        }
   });
});

除了现有答案外,您还可以使用
:has

要修复原始代码,您需要添加
,以提供:

$("#org-lists").each(function() {
    // this = org-list
    $(this).find(".mailing-list").each(function() {
        // this = mailing-list
        // find if this mailing-list has a confirm (need >0 check)
        if ($(this).find('.confirm').length > 0) {
            // this still = mailing-list
            $(this).find('input[type="submit"]').hide();
        }
   });
});

这是所需的解决方案,此处使用@ssamuel代码

$(文档)。在('单击','邮件列表')上,函数(){
$(this.find(“input”).hide();
$(this.parent().append('Joined');
});

这是所需的解决方案,此处使用@ssamuel代码

$(文档)。在('单击','邮件列表')上,函数(){
$(this.find(“input”).hide();
$(this.parent().append('Joined');
});



这是邮件中确认的跨度吗list@Pete是否在内部?是否可以在单击按钮的同时隐藏输入?ie与您添加的类的代码相同?@freedomn-m这是一个小部件的一部分,我无法修改/查看它的代码是邮件中确认的span吗list@Pete是否在内部?是否可以在单击按钮的同时隐藏输入?ie与您添加该类的代码相同?@freedomn-m这是一个小部件的一部分,我无法修改/查看其代码,但单击后才添加
confirm
。那么它如何说:如果
confirm
存在,那么隐藏submit当您不需要循环时,只需将隐藏代码放在单击事件“how can say if confirm exists”中,这就是
$('.confirm')。每个
都会做的事情-它只在confirm存在时运行内部部分。但是
confirm
只是在单击之后添加的。那么它如何说:如果
确认
存在,那么隐藏提交当你不需要循环时,只需将隐藏代码放在点击事件“如果确认存在,它如何说如果确认存在”-这就是
$('.confirm')。每一个
都做-它只在确认存在时运行内部部分。谢谢。问题是我不能使用
单击函数
,因为这会阻止另一个函数运行。因此,应该使用
length
或类似的工具来完成,这可能是因为您在就绪状态下运行它,而不是在单击元素后运行它。单击元素后如何运行它?@john285请参见编辑-您可以查看div,然后如果它们发生更改,您可以运行循环来隐藏项目谢谢。问题是我不能使用
单击函数
,因为这会阻止另一个函数运行。因此,应该使用
length
或类似的工具来完成,这可能是因为您在就绪状态下运行它,而不是在单击元素后运行它。单击元素后如何运行它?@john285请参见编辑-您可以查看div,然后如果它们发生更改,您可以运行循环来隐藏项目谢谢。问题是我不能使用
单击函数
,因为这会阻止另一个函数运行。所以应该用
length
或类似的东西来完成。谢谢。问题是我不能使用
单击函数
,因为这会阻止另一个函数运行。所以应该用
长度
或类似的东西来完成