مشكلة النموذج الأولي للجافا سكريبت
-
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 لعرضها: لا شيء إذا كان كل ما يعرض لي: لا شيء.
أعتقد أنه سيبدأ مثل:
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
والتحقق مما إذا كان كل الإرجاع صحيح. إخفاء 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();
}
});
}
هذا الرمز مختبر.
هذا هو الحل المسج (يجب أن يكون النموذج الأولي شيء مماثل):
$('div.alist').css('display', function () {
return $(this).find('li:visible').length < 1 ? 'none' : '';
});
لا تنتمي إلى StackOverflow