Постепенное ухудшение jQuery

Вы можете создать базовый компонент, чтобы понять это. В базовый компонент вы можете добавить свою переменную hidden и, в конечном итоге, вы можете предоставить метод для изменения значения переменной hidden.

Таким образом, все ваши расширяющие компоненты будут иметь переменную hidden. Но если вам больше ничего не нужно и ваша переменная hidden обновляется просто логическим значением (this.hidden = true или this.hidden = false), у вас не будет никаких других преимуществ.

Наконец, имейте в виду, что кнопка (или та, которую вы хотите использовать) для обновления значения переменной hidden должна остаться в шаблонных файлах подкомпонентов.

С этим сценарием я думаю, что ваше решение является лучшим, но если вы хотите немного усложнить свой подход, вы можете использовать

  • небольшой HideButtonComponent только с «показать меньше» / « показать больше "кнопка
  • a HideService, содержащая вашу переменную hidden (обновлена ​​с помощью HideButtonComponent)

Затем в ваши компоненты вы можете вставить HideService в конструкторы и подписаться на hidden изменения переменных. В файлы шаблонов ваших компонентов вы можете поместить свой HideButtonComponent, чтобы избежать дублирования кода кнопки

Но я повторяю: это очень небольшое преимущество

9
задан Kev 20 November 2008 в 21:05
поделиться

3 ответа

Если Вы рассматриваете "Каскадный Порядок" 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.

5
ответ дан 3 November 2019 в 05:39
поделиться

Если что-то может быть сделано полностью в CSS, которые, как я говорю, сохраняют его тем путем. Если отсутствие JavaScript в браузере является беспокойством, то большую часть времени я показываю всю незатронутую страницу.

Скажите, например, что я собираюсь использовать jQuery для переключения элемента, когда флажок нажат. На загрузке страницы я смотрю на флажок и обновляю элемент соответственно. Если JavaScript не включат, то элемент все еще появится, и сайт все еще будет применим. Просто не как хороший.

1
ответ дан 3 November 2019 в 05:39
поделиться

Человек, у Вас есть игра на базе браузера, правильно? У Вас есть меньше чем 1% пользователей с отключенным js! И это, 1% является апокалиптическим числом, потому что я могу ДЕРЖАТЬ ПАРИ, что у Вас есть меньше, чем это ;)

Во всяком случае, если Вы действительно обеспокоены этим, просто сделайте сайт без любого JavaScript. И сделайте это функциональными 100%. После того, как Ваш сайт работает полностью без любого js аромата, только начните улучшаться с jQuery (или любая другая библиотека; jQuery является лучшим :P). Но с осторожным: не изменяйте НИ ОДНОГО из Вас HTML. Это легче, чем это смотрит ;)

И да, если у Вас есть вещи, который работает без js (как те подсказки), сохраняют его!

0
ответ дан 3 November 2019 в 05:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: