Генерация / выбор нестандартных HTML-тегов с помощью jQuery, хорошая идея? - PullRequest
5 голосов
/ 22 марта 2011

Я заметил, что jQuery может создавать и получать доступ к несуществующим / нестандартным тегам HTML.Например,

$('body').append('<fake></fake>').html('blah');
var foo = $('fake').html(); // foo === 'blah'

Будет ли это нарушать какую-то проверку?Это плохая идея или это полезно?Главный вопрос, хотя это можно сделать, должно ли это быть сделано?

Заранее спасибо!

Ответы [ 5 ]

2 голосов
/ 22 марта 2011

HTML как таковой позволяет использовать любую разметку, которая вам нравится. Браузеры могут по-разному реагировать на неизвестные теги (и не на ли они тоже известные?), Но общая суть в том, что они игнорируют неизвестные теги и вместо этого пытаются отобразить их содержимое.

Так что технически ничто не мешает вам использовать <fake> элементы (сравните, что IE7 сделает с страницей HTML5 и новыми определенными тегами). Стандартизация HTML всегда была постфактум Производители браузеров изобрели теги, и в какой-то момент линия была нарисована и получила название HTMLx.

Реальный вопрос в том, если вы положительно должны это сделать. И если вам важно, нравится ли вашему документу валидатор W3C или нет. Или если вам важно, нравится ли вашим коллегам-программистам ваш документ или нет.

Если вы можете сделать то же самое и остаться в рамках стандарта, это не стоит хлопот.

1 голос
/ 22 марта 2011

Правила HTML говорят, что если манипулировать с помощью скрипта, результат должен быть действителен как до, так и после манипуляции.

Валидация - это средство для достижения цели, поэтому, если она работает для вас каким-то образом,тогда я бы не слишком волновался об этом.Тем не менее, я бы не стал «подкрадываться» к прошлой проверке, используя что-то вроде элемента <fb:fan /> в Facebook - я бы просто смирился с этим и признал, что код не действителен.

1 голос
/ 22 марта 2011

Вы можете использовать нестандартные теги HTML, и большинство браузеров должны работать нормально, поэтому вы можете использовать теги HTML5 в браузерах, которые их не распознают, и все, что вам нужно сделать, это сказать им, как их стилизовать (особенно какие теги отображаются: блок). Но я бы не рекомендовал делать это по двум причинам: во-первых, это нарушает валидацию, а во-вторых, вы можете использовать какой-то тег, который позже будет добавлен в HTML, и вдруг ваша страница перестанет работать в новых браузерах.

1 голос
/ 22 марта 2011

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

0 голосов
/ 22 марта 2011

На самом деле нет причин делать что-то подобное. Лучше использовать классы типа

<p class = "my_class">

А затем сделайте что-то вроде

$('p.my_class').html('bah');

Edit:

Основная причина, по которой использование поддельных тегов является плохим, заключается в том, что он делает ваш HTML недействительным и может испортить отображение вашей страницы в определенных браузерах, поскольку они не знают, как обращаться с созданным вами тегом (хотя большинство будет относиться к нему как к некоторому DIV).

Это основная причина, по которой это нехорошо, оно просто нарушает стандарты и приводит к запутанному коду, который трудно поддерживать, потому что вы должны объяснить, для чего нужны ваши пользовательские теги.

Если вы действительно решили использовать пользовательские теги, вы можете сделать свою веб-страницу допустимым файлом XML, а затем использовать XSLT для преобразования XML в действительный HTML. Но в этом случае я бы просто придерживался классов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...