1

jqueryフィルターメソッドを使用して一致した要素IDを返したいのですが、「オブジェクトオブジェクト」フィドルを返しています

//css

.none{display:none}

//html

<div class="none">
 <span style="display:none">first</span>
 <span style="display:block">second</span>
</div>

//脚本

visibles = $('.none').find('span').filter(function(){
if($(this).css('display') == 'block')   
return $(this).attr('id');
});
alert(visibles);
4

2 に答える 2

2

filter に与えるコールバックは、フィルタリングに使用される値を返します。

一致するものが 1 つしかない場合は、次を使用します。

visibleId = $('.none').find('span').filter(function(){
    return $(this).css('display') == 'block'
}).attr('id');

一致 ID の配列を取得する場合は、次を使用します。

visibles = $('.none').find('span').filter(function(){
    return $(this).css('display') == 'block'
}).map(function(){ return this.id }).get();

デモンストレーション

于 2013-01-24T08:45:45.230 に答える
1

jQuery.filteridは一致した要素を返すため、要素をフィルタリングした後に値を取得する必要があります。

visibles = $('.none').find('span').filter(function(){
   if($(this).css('display') == 'block')   
       return true;
}).attr('id');
alert(visibles);

フィドル

于 2013-01-24T08:47:08.927 に答える