Вы можете создать базовый компонент, чтобы понять это. В базовый компонент вы можете добавить свою переменную hidden
и, в конечном итоге, вы можете предоставить метод для изменения значения переменной hidden
.
Таким образом, все ваши расширяющие компоненты будут иметь переменную hidden
. Но если вам больше ничего не нужно и ваша переменная hidden
обновляется просто логическим значением (this.hidden = true
или this.hidden = false
), у вас не будет никаких других преимуществ.
Наконец, имейте в виду, что кнопка (или та, которую вы хотите использовать) для обновления значения переменной hidden
должна остаться в шаблонных файлах подкомпонентов.
С этим сценарием я думаю, что ваше решение является лучшим, но если вы хотите немного усложнить свой подход, вы можете использовать
HideButtonComponent
только с «показать меньше» / « показать больше "кнопка HideService
, содержащая вашу переменную hidden
(обновлена с помощью HideButtonComponent
) Затем в ваши компоненты вы можете вставить HideService
в конструкторы и подписаться на hidden
изменения переменных. В файлы шаблонов ваших компонентов вы можете поместить свой HideButtonComponent
, чтобы избежать дублирования кода кнопки
Но я повторяю: это очень небольшое преимущество
Если Вы рассматриваете "Каскадный Порядок" CSS, Вы не могли бы только добавить стиль CSS в самом конце всего Вашего предыдущего определения CSS для отмены какой-либо CSS, производят Вас, в настоящее время имеют для эффекта подсказки?
То правило CSS было бы только объявлено, если JavaScript активируется, и JQuery обнаруживается.
Тем путем Вы уверены, что Ваш эффект подсказки CSS не находится в конфликте с Вашим эффектом JQuery.
Что-то как:
a.info:hover span{ display:none}
с использованием "js_enabled" класса, чтобы заставить эту CSS управлять условным выражением.
Также можно сделать это путем добавления, что CSS управляет на лету:
function createCSSRule(rule,attributes)
{
//Create the CSS rule
var newRule = "\n"+rule+"{\n";
for (var attribute in attributes)
{
newRule += "\t" + attribute + ": " + attributes[attribute] + ";\n";
}
newRule += "}\n";
//Inject it in the style element or create a new one if it doesn't exist
styleTag = $E('style[type="text/css"]') || new Element("style").setProperty('type','text/css').injectInside(document.head);
if(window.ie)
{
styleTag.styleSheet.cssText += newRule;
}
else
{
styleTag.appendText(newRule);
}
}
Большая часть простого решения для Разделения CSS и Javascrip состоит в том, чтобы удалить Ваш класс CSS
function jscss(a,o,c1,c2)
{
switch (a){
case 'swap':
o.className=!jscss('check',o,c1)?o.className.replace(c2,c1): <-
o.className.replace(c1,c2);
break;
case 'add':
if(!jscss('check',o,c1)){o.className+=o.className?' '+c1:c1;}
break;
case 'remove':
var rep=o.className.match(' '+c1)?' '+c1:c1;
o.className=o.className.replace(rep,'');
break;
case 'check':
return new RegExp('\\b'+c1+'\\b').test(o.className)
break;
}
}
Эта функция в качестве примера берет четыре параметра:
a
определяет действие, которое Вы хотите, чтобы функция выполнила.
o
рассматриваемый объект.
c1
название первого класса
c2
название второго класса
Возможные действия:
swap
класс c1 замен с классом c2 в объекте o.
add
добавляет класс c1 к объекту o.
remove
удаляет класс c1 из объекта o.
check
протестируйте, если класс c1 уже применяется для возражения o и возвращает TRUE или FALSE.
Если что-то может быть сделано полностью в CSS, которые, как я говорю, сохраняют его тем путем. Если отсутствие JavaScript в браузере является беспокойством, то большую часть времени я показываю всю незатронутую страницу.
Скажите, например, что я собираюсь использовать jQuery для переключения элемента, когда флажок нажат. На загрузке страницы я смотрю на флажок и обновляю элемент соответственно. Если JavaScript не включат, то элемент все еще появится, и сайт все еще будет применим. Просто не как хороший.
Человек, у Вас есть игра на базе браузера, правильно? У Вас есть меньше чем 1% пользователей с отключенным js! И это, 1% является апокалиптическим числом, потому что я могу ДЕРЖАТЬ ПАРИ, что у Вас есть меньше, чем это ;)
Во всяком случае, если Вы действительно обеспокоены этим, просто сделайте сайт без любого JavaScript. И сделайте это функциональными 100%. После того, как Ваш сайт работает полностью без любого js аромата, только начните улучшаться с jQuery (или любая другая библиотека; jQuery является лучшим :P). Но с осторожным: не изменяйте НИ ОДНОГО из Вас HTML. Это легче, чем это смотрит ;)
И да, если у Вас есть вещи, который работает без js (как те подсказки), сохраняют его!