جافا سكريبت - تجاوز نمط !important
العنوان يلخص الأمر إلى حد كبير.
ورقة الأنماط الخارجية تحتوي على الكود التالي:
td.EvenRow a {
display: none !important;
}
لقد جربت استخدام:
element.style.display = "inline";
و
element.style.display = "inline !important";
لكنهما لا يعملان. هل من الممكن تجاوز نمط !important باستخدام الجافاسكريبت؟
هذا من أجل امتداد غريسمانكي، إذا كان لذلك فرق.
الإجابة رقم 1
هناك بضعة جمل بسيطة يمكنك استخدامها للقيام بذلك.
- اضبط "style" السمة على العنصر:
element.setAttribute('style', 'display:inline !important');
أو...
- قم بتعديل خاصية
cssTextللكائنstyle:
element.style.cssText = 'display:inline !important';
أي منهما سيقوم بالمهمة.
===
لقد كتبت إضافة jQuery تسمى "important" للتعامل مع قواعد !important في العناصر: http://github.com/premasagar/important
===
تعديل: كما تم مشاركته في التعليقات، توفر واجهة CSSOM القياسية (واجهة برمجة التطبيقات لجافاسكريبت للتفاعل مع CSS) طريقة setProperty:
element.style.setProperty(propertyName, value, priority);
مثال:
document.body.style.setProperty('background-color', 'red', 'important');
الإجابة رقم 2
لـ element.style طريقة setProperty التي يمكنها أخذ الأولوية كمعامل ثالث:
element.style.setProperty("display", "inline", "important")
لم يكن يعمل في الإصدارات القديمة من إنترنت إكسبلورر لكنه يجب أن يكون جيدًا في المتصفحات الحالية.
الإجابة رقم 3
أعتقد أن الطريقة الوحيدة للقيام بذلك هي إضافة النمط كتصريح CSS جديد مع اللاحقة '!important'. أسهل طريقة للقيام بذلك هي إلحاق عنصر
