2

我对如何获得一个特定的孩子的 div id 风格是阻塞的;我一直在谷歌搜索和 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

4 回答 4

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
}
于 2012-12-30T14:08:51.110 回答
1

你想要的奇怪的东西......试试这个

var active = $( '#myDiv' ).children().filter( function() {
    return 'block' == $(this).css( 'display' );
} );
于 2012-12-30T14:09:53.340 回答
0

也许这可以帮助过滤元素:http ://api.jquery.com/filter/

于 2012-12-30T14:06:21.873 回答
0

这是一个包含所有块元素的小演示,包括原生块元素。

$(selectedElements).filter(function(){
    return $(this).css('display') === 'block';
});
于 2012-12-30T14:13:24.633 回答