【发布时间】:2011-04-08 17:38:12
【问题描述】:
我最近向question 询问了有关使用 jQuery 操作 html 选择框的问题,并得到了这个非常简短和甜蜜的代码作为答案。
$("#myselect").change(function (event) {
var o = $("#myselect option:selected"),
v=o.text(),
old = $("#myselect option:contains('name')"),
oldv = old.html();
oldv && old.html( oldv.replace('name: ', '') );
o.text('name: ' + v);
});
我有一个问题。这段代码不适用于多个类别,我似乎无法思考如何完成它。因此,我对其进行了明显的更改:
$("select").change(function (event) {
var foo = $("select option:selected"),
bar = foo.text(),
cat = foo.parent().attr("label"),
old = $("select option:contains('" + cat + "')"),
oldbar = old.html();
oldbar && old.html( oldbar.replace(cat + ': ', '') );
foo.text(cat + ': ' + bar);
});
这现在适用于多个 optgroups/类别,但导致了另一个错误。一个更有问题的,在那个。
当您从一个类别点击到另一个类别时会发生这种情况。查看jsFiddle。
【问题讨论】:
-
在换行符之后加逗号让我眼睛发痒。
-
什么是错误?我似乎在 Chrome 和 FF 中都得到了预期的行为。 (编辑:nm 我看到了,类别的名称被添加到下拉列表中)
-
@Shaz,是的,我也遇到了。我已经习惯了。 @goggin13,当您单击一个类别选项(例如,萨博)然后转到另一个(哈雷)并返回萨博时,就会发生错误。
-
@Shaz +1 我也受不了,所以我帮了大家一个忙,把它清理干净了。
-
@nolabel - 我也非常讨厌这种风格,但它是一种有效的风格,我认为在 OP 上强制使用你喜欢的风格是一种不好的形式
标签: javascript jquery html algorithm logic