【发布时间】:2015-11-25 02:42:37
【问题描述】:
JavaScript (jQuery):
$("#content-styling-bar td").click(function() {
if ($(this).text() == "Bold ") {
$("#description").append("<b></b>");
}
});
HTML:
<table id="content-styling-bar">
<tr>
<td>
Bold
</td>
<td>
Italic
</td>
<td>
Underline
</td>
<td>
Main Heading
</td>
<td>
Sub Heading
</td>
<td>
Link
</td>
<td>
Image
</td>
</tr>
</table>
我有这个代码。此代码用于站点的博客管理。这个想法是,当我单击粗体表格单元格时,jQuery 获取该表格单元格中包含的文本,然后脚本确定要附加到 textarea 的标记集。
我更喜欢比较单元格中的文本的方法,而不是向每个单元格的 onclick 参数添加独特的函数,因为我想保持我的代码干燥,这将涉及创建一堆函数来完成同样的事情,或者添加很多不需要的onclick 属性。
我已通过警告验证,当我调用 $(this).text() 时,我确实收到了“粗体”文本,但它似乎不满足 if 语句。
我的 JavaScript 有什么问题?
【问题讨论】:
-
“我的 JavaScript 有什么问题?” 我们不能告诉你,你还没有说问题是什么。会发生什么,您希望发生什么?
-
坦率地说,我根本不会称之为 DRY。你将不得不重复所有的文本,并有一个庞大的 if/else 语句——而且是一个脆弱的语句。相反,我会在单元格上使用
data-*属性来存储标签/操作:<td data-tag="b">Bold</td>然后$("#description").append(document.createElement($(this).attr("data-tag"))); -
@T.J.Crowder 也可以,但会导致
Image按钮出现问题。这需要调用一些额外的代码,以便我可以上传图片。 -
对于复杂情况,您可以在非展示属性值上进行分支,但它会自动处理常见情况(
b、i、u、h1、h2)。
标签: javascript jquery html click append