获取style = block的div id

时间:2012-12-30 14:03:06

标签: javascript jquery

我正在打破如何获得一个特定的孩子div id,哪个样式是块; 我一直在google搜索和stackoverflow浏览漏洞的日子。

我可以使用以下方式让所有孩子:

var active = $('#myDiv').children().get();

但我不知道如何过滤风格。 .get()之后不允许使用.attr()。 所以,我只想知道我需要在之后使用它的id。

编辑:

这是我想要使用的完整功能:

  // ON MODAL DISMISS, RESET STEPS
  $('#myDiv').on('hidden', function() {

    var currentStep = $('#myDiv').children().filter(function(){
        return $(this).css('display') === 'block'; 
    });

    //console.log(currentStep);
        replace(currentStep, step1);
  });


function replace( hide, show ) {
  document.getElementById(hide).style.display="none";
  document.getElementById(show).style.display="block";
}

HTML:

<div id="myDiv">
 <div id="step1">
  ...
 </div>
 <div id="step2">
  ...
 </div>
 <div id="step3">
  ...
 </div>
</div>

目前,当我启动模态并完成步骤,但决定在步骤3中关闭模态并重新启动模态时,它将继续执行步骤3。因此我认为在解雇之前我需要当前的步骤,所以我可以将它发送到我的替换函数并将currentStep的样式设置为none,并阻止第一步。

4 个答案:

答案 0 :(得分:5)

尝试此操作以返回块子项:

$('#mydiv').children().filter(function () {
  return $(this).css('display') === 'block';
});

这将仅返回在该函数中返回true的子项。

<强>更新

首先,如果你已经在使用jQuery,为什么还要使用长手原始的JS选择过程呢?而不是

function replace( hide, show ) {
  document.getElementById(hide).style.display="none";
  document.getElementById(show).style.display="block";
}

更改为

function replace(hide, show) {
  $('#' + hide).hide();
  $('#' + show).show();
}

此外,看起来似乎只有一步(currentStep)一次显示。既然你试图找到所显示的一个元素,为什么不设置你的css说:

#mydiv div {
  display: none;
}
#mydiv div.show {
  display: block;
}

然后你可以删除/添加类来显示/隐藏它们。使用此方法,您的replace()函数可能如下所示:

function replace(show) {
  $('#mydiv div.show').removeClass('show'); // reset all shown children to be hidden
  $('#mydiv ' + show).addClass('show'); // same way you determine which div should show
}

答案 1 :(得分:1)

你想要的奇怪的事情......试试这个

var active = $( '#myDiv' ).children().filter( function() {
    return 'block' == $(this).css( 'display' );
} );

答案 2 :(得分:0)

这可能有助于过滤元素:http://api.jquery.com/filter/

答案 3 :(得分:0)

这里是a small demo,它包含所有块元素,包括本机块元素。

$(selectedElements).filter(function(){
    return $(this).css('display') === 'block';
});