2011-03-22 56 views
5

我注意到jQuery可以创建并访问不存在/非标准的HTML标签。例如,用jQuery生成/选择非标准的HTML标签,这是一个好主意吗?

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

这会打破某种验证吗?这是一个坏主意,还是有时这有用?主要问题是,虽然可以完成,但是应该完成吗?

在此先感谢!

+0

我不知道这个打破验证编程完成(静态HTML,是的,这**将**中断),但它应该完成?我将不得不对此拒绝。我想不出为什么要使用标准标记无法实现的非标准HTML标记的原因,那么为什么有风险突破验证? – 2011-03-22 17:10:49

回答

0

真的没有理由做这样的事情。更好的方法是使用类,如

<p class = "my_class"> 

然后像做

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

编辑:

主要的原因在于它是不好用假标签,是因为它使你的HTML无效,可能会在某些浏览器上渲染页面,因为他们不知道如何处理您创建的标记(尽管大多数人会将其视为某种DIV)。

这就是它不好的主要原因,它只是打破了标准并导致难以维护的代码混淆,因为你必须解释你的自定义标签的用途。

如果您真的决定使用自定义标签,则可以使您的网页成为有效的XML文件,然后使用XSLT将XML转换为有效的HTML。但在这种情况下,我只是坚持上课。

+0

我倾向于同意..但反正这样做的负面影响是什么? – Dutchie432 2011-03-22 17:10:03

1

你可以使用非标准的HTML标签,大多数浏览器应该可以正常工作,这就是为什么你可以在浏览器中使用HTML5标签,而不能识别它们,你需要做的就是告诉它们如何设计它们(特别是哪些标签显示:块)。但我不推荐这样做,原因有两个:首先它违反了验证,然后你可能会使用一些标签,稍后将其添加到HTML中,并且突然停止在较新的浏览器中工作。

1

我看到的最大问题是如果你创建一个对你有用的标签,谁能说它有一天不会成为标准?如果发生这种情况,它最终可能会扮演一个角色,或者获得您不希望的样式,从而破坏您的代码。

1

HTML的规则确实表示,如果通过脚本操作,结果应该在操作前后都有效。

验证是达到目的的一种手段,所以如果它以某种方式适用于您,那么我不会太担心它。这就是说,我不会这样做,“偷偷”通过验证,而使用类似Facebook的<fb:fan />元素 - 我只是吮吸它,并承认代码无效。

2

HTML 同样允许您使用任何你喜欢的标记。浏览器可能会对未知标签做出不同的反应(并且它们不会与已知的标签反应?),但总体底线是他们忽略未知标签并尝试呈现其内容。

从技术上讲,没有什么能阻止你使用<fake>元素(比较IE7对HTML5页面和在那里定义的新标签的处理)。 HTML标准化一直是事后过程。浏览器厂商发明了标签,并且在某一时刻该线路被绘制出来,并被称为HTMLx。

真正的问题是,如果你肯定必须这样做。如果你关心W3C验证器是否喜欢你的文档。或者如果你关心你的程序员是否喜欢你的文档。

如果你可以做到这一点,并保持在标准范围内,这是不值得的麻烦。

相关问题