找到最近的隐藏元素并用jQuery显示它

找到最近的隐藏元素并用jQuery显示它,jquery,Jquery,我想显示一个元素,但我必须注意,元素是可见的。 元素可能以不同的方式嵌套(div、span、i…) 因此,我想为目标找到最近的元素,它是不可见的,并对其进行更改 我试过这样做,但失败了: //info: result.msg_target_id = '#myid' $(result.msg_target_id).closest(':hidden').show(); 是否可以仅将“最近”与“:hidden”-一起使用,而不使用div、span、i等 我做错了什么,或者哪种方法是最好的 更新 这是

我想显示一个元素,但我必须注意,元素是可见的。 元素可能以不同的方式嵌套(div、span、i…)

因此,我想为目标找到最近的元素,它是不可见的,并对其进行更改

我试过这样做,但失败了:

//info: result.msg_target_id = '#myid'
$(result.msg_target_id).closest(':hidden').show();
是否可以仅将“最近”与“:hidden”-一起使用,而不使用div、span、i等

我做错了什么,或者哪种方法是最好的

更新
这是HTML部分,但请不要,这只是一种可能的HTML情况,它不知道上面的函数在哪个HTML情况下使用

<div id="modal_errormsg_div" class="alert alert-danger alert-dismissible hide">
                    <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
                    <h5><i class="icon fa fa-ban"></i><span id="modal_errormsg_head"> <?= trans('error')?></span></h5>
                    <span id="modal_errormsg_body"></span>
                  </div>

基于@Swati,这里是解决这个问题的方法

$("#myid-inside").show()//show first the divs whose id is there
$("#myid-inside").parent(".hide:first").addClass('show').removeClass('hide') //use parent because the outer div is parent of inner .

//if the div which you need to display is at same level i.e :  
//<div id="myid-outside" class="hide">
//<p id="myid-inside1" style="display:none;">Show me</p>
 // <p id="myid-inside" style="display:none;">Show me</p>
//</div>
//here `myid-inside1` is on same level so use sibilings ..or prevAll else if its not in same level use parent .
$(“#myid inside”).show()//首先显示id所在的div
$(“#myid inside”).parent(.hide:first”).addClass('show').removeClass('hide')//使用parent,因为外部div是内部div的父级。
//如果需要显示的div处于同一级别,即:
//
//演示给我看

//显示给我看

// //此处“myid-inside1”处于同一级别,因此请使用siblings..或prevAll,如果它不在同一级别,请使用parent。
基于@Swati这里是解决这个问题的方法

$("#myid-inside").show()//show first the divs whose id is there
$("#myid-inside").parent(".hide:first").addClass('show').removeClass('hide') //use parent because the outer div is parent of inner .

//if the div which you need to display is at same level i.e :  
//<div id="myid-outside" class="hide">
//<p id="myid-inside1" style="display:none;">Show me</p>
 // <p id="myid-inside" style="display:none;">Show me</p>
//</div>
//here `myid-inside1` is on same level so use sibilings ..or prevAll else if its not in same level use parent .
$(“#myid inside”).show()//首先显示id所在的div
$(“#myid inside”).parent(.hide:first”).addClass('show').removeClass('hide')//使用parent,因为外部div是内部div的父级。
//如果需要显示的div处于同一级别,即:
//
//演示给我看

//显示给我看

// //此处“myid-inside1”处于同一级别,因此请使用siblings..或prevAll,如果它不在同一级别,请使用parent。
你能显示你的html吗?我已经更新了一个样本。我不确定这是否是你需要的。你能像这样试试吗
$(“#myid”).prevAll(“:hidden:first”).show()。使用fiddle@Swati我已经试过了,但它对我不起作用,零件仍然不可见(display:none)可能是“hide”类导致了问题?那么这个
$(“#myid”).prevAll(.hide:first”).addClass('show').removeClass('hide')怎么样
.Working你能显示你的html吗?我已经更新了一个示例。不确定这是否是你需要的。你能像这样试试吗
$(“#myid”).prevAll(“:hidden:first”).show()。工作小提琴@Swati我已经试过了,但它对我不起作用,零件仍然不可见(display:none)可能是“hide”类导致了问题?那么这个
$(“#myid”).prevAll(.hide:first”).addClass('show').removeClass('hide')
怎么样
$(result.msg_target_id).siblings(':hidden').show();
$(result.msg_target_id).siblings(':hidden').removeClass('hide');
$("#myid-inside").show()//show first the divs whose id is there
$("#myid-inside").parent(".hide:first").addClass('show').removeClass('hide') //use parent because the outer div is parent of inner .

//if the div which you need to display is at same level i.e :  
//<div id="myid-outside" class="hide">
//<p id="myid-inside1" style="display:none;">Show me</p>
 // <p id="myid-inside" style="display:none;">Show me</p>
//</div>
//here `myid-inside1` is on same level so use sibilings ..or prevAll else if its not in same level use parent .