注意:我有一个解决这个问题的方法,但我更喜欢用逗号分隔我在下面描述的值,而不是用空格分隔它们(这就是我的解决方法)。
我有一个ASP.NET网站,允许教师从预设评论的DropDownList中进行选择,并将这些评论应用于他们班级的学生。我在GridView中显示学生和注释,并使用Label显示数据库中已存在的任何注释(在过程中从DropDownList中删除它们)。当教师选择其中一个注释并单击一个按钮时,我的jQuery函数:
<span>
标记。span标记的onclick事件与我上面描述的相反 - 它将值和文本拉出并在下拉菜单中重新创建选项。此外,它在父标签中用“,”替换字符串,如“,”。我发现当我替换这些字符串(位于我已附加onclick事件的跨度之外)时,onclick事件就会消失。
我熟悉.live(),但是因为这个GridView中的每一行都包含对当前正在使用的特定学生和类的唯一引用,所以我无法知道每行需要传递给函数的值提前时间。除了我描述的解决方法或重新附加onclick事件之外,有没有解决此问题的方法?
答案 0 :(得分:1)
这是一个想法:用<span>
s中的逗号包含类似'separator'的类。然后,当您删除项目时,您可以检查它是否是列表中的第一项,如果是,则删除后续分隔符,如果不是,则删除前一个分隔符。所以我们会说你有一个像这样的html结构:
<span id="myLabel">
<span class="comment">You're great!</span><span class="separator">, </span><span class="comment">You're mediocre!</span><span class="separator">, </span><span class="comment">You suck!</span>
</span>
这是一个点击功能,可以在保持onclick事件的同时正确删除逗号:
$('.comment').click(function() {
//decide which comma to remove
if ($(this).prevAll('.comment').size() == 0) {
//this is the first comment, remove the next comma and this comment
$(this).next('.separator').remove().end().remove();
} else {
//this is not the first comment, remove the previous comma and this comment
$(this).prev('.separator').remove().end().remove();
}
});
这是一个现场演示,显示其有效:http://jsfiddle.net/yWet5/
很抱歉,如果我误解了你问题的任何部分。