JavaScriptプロトタイプの問題
-
18-09-2019 - |
質問
だから私はかなり基本的なJavaScriptの問題を抱えています。
<div class='alist'>
<ul>
<li class='group_1'> An Item </li>
<li class='group_1'> An Item </li>
<li class='group_2'> An Item </li>
</ul>
</div>
<div class='alist'>
<ul>
<li class='group_1'> An Item </li>
<li class='group_1'> An Item </li>
<li class='group_2'> An Item </li>
</ul>
</div>
<script>
function toggle_item( num ){
$$( 'li.group_' + num ).invoke('toggle');
}
</script>
基本的に、表示するDivを設定するスイーパーを作成する必要があります。すべてのLIが表示されない場合:なし。
私はそれが始まると思います:
function sweep(){
$$('div.alist').each( function( s ) {
ar = s.down().children
});
}
良いチュートリアルの提案も大歓迎です
解決
このようなことはあなたを始めるかもしれません。子供を繰り返して、彼らが見えるかどうかを確認する必要があります。それらのいずれかがそうでない場合は、フラグを設定してループから壊します。フラグが間違っている場合、あなたは隠す必要はありません div
.
function sweep(){
$$('div.alist').each( function( s ) {
var shouldHide = true;
var children = s.down().childElements();
children.each(function(li) {
if(li.visible()) {
shouldHide = false;
throw $break;
}
});
if(shouldHide) {
s.hide();
}
});
}
他のヒント
使用できます 選択する() の方法 Element
すべてを見つけるために li
子孫。メソッドを実行します array.all それぞれのため li
すべてがtrueを返すかどうかを確認します。すべてがtrueを返す場合は、Divを非表示にします。
function sweep() {
// check each div
$$('div.alist').each(function(element) {
var listItems = element.select('li');
// are the list items of this div hidden?
var listItemsHidden = listItems.all(function(item) {
return item.visible();
});
// hide the div too if so
if(listIemsHidden) {
element.hide();
}
});
}
このコードはテストされていません。
これはjQueryソリューションです(プロトタイプは似たようなものでなければなりません):
$('div.alist').css('display', function () {
return $(this).find('li:visible').length < 1 ? 'none' : '';
});
所属していません StackOverflow