جافاسكريبت - كيفية اختيار عنصر لا يحتوي على صنف معين
أتساءل عن كيفية اختيار عنصر لا يحتوي على فئة معينة باستخدام JavaScript، وليس jQuery.
على سبيل المثال، لدي هذه القائمة:
<ul id="tasks">
<li class="completed selected">One Task</li>
<li>Two Task</li>
</ul>
وأنا أختار المهمة المكتملة عن طريق:
var completeTask = document.querySelector("li.completed.selected");
لكن بعد ذلك لست متأكدًا من كيفية اختيار عنصر القائمة الذي لا يحتوي على تلك الفئات.
الإجابة رقم 1
هذا يختار العنصر LI الثاني.
document.querySelector("li:not([class])")
أو
document.querySelector("li:not(.completed):not(.selected)")
مثال:
// select li which doesn't have a 'class' attribute...
console.log(document.querySelector("li:not([class])"))
// select li which doesn't have a '.completed' and a '.selected' class...
console.log(document.querySelector("li:not(.completed):not(.selected)")) <ul id="tasks">
<li class="completed selected">One Task</li>
<li>Two Task</li>
</ul>الإجابة رقم 2
لتحديد <li> الذي لا يملك تصنيف completed ولا selected:
document.querySelector("li:not(.completed):not(.selected)");
كمان
http://jsfiddle.net/Z8djF/
الإجابة رقم 3
يمكنك تجربة المحدد :not()
var completeTask = document.querySelector("li:not(.completed):not(.selected)");
http://jsfiddle.net/UM3j5/
الإجابة رقم 4
يقبل محدد :not(*selector*) أيضًا الفواصل (وكذلك querySelectorAll()) https://developer.mozilla.org/en-US/docs/Web/CSS/:not#syntax:
let plainElements = document.querySelectorAll( ':not( .completed, .in-progress ) ');
plainElements.forEach( ( item ) => { item.style.color = 'red'; } );li { color: green; }<ul id="tasks">
<li class="completed selected">Task 1</li>
<li>Task 2</li>
<li class="in-progress">Task 3</li>
</ul>