注:我有一个解决这个问题的方法,但我更喜欢用逗号分隔值,而不是用空格分隔它们(这是我的解决方法)。jQuery修剪和删除父休息儿童事件
我有一个ASP.NET网站,允许教师从预设注释的DropDownList中进行选择,并将这些注释应用到学生的课堂中。我在GridView中显示学生和注释,并使用Label显示数据库中已存在的任何注释(将它们从流程中的DropDownList中移除)。当教师选择其中一个注释并点击一个按钮时,我的jQuery功能:
- 将所选值和文本拉出选项(假设它不是默认选项)。
- 检查Label.children()。length,并在文本大于零时向文本附加“,”。
- 使用包含值和文本的隐藏字段创建
<span>
标记。 - 追加范围内的文字。
- 关闭跨度。
- 附加一个onclick事件到跨度。
- 从DropDownList中删除原始选项。
span标记的onclick事件与我上面描述的相反 - 它将值和文本拉出并重新创建下拉菜单中的选项。此外,它还会在父标签中将“,”替换为“,”。我发现,当我将这些字符串(位于跨连接的onclick事件之外的字符串)替换为onclick事件消失时。我很熟悉.live(),但是由于GridView中的每一行都包含对当前正在使用的特定学生和类的唯一引用,所以我无法知道每行需要传入的值功能提前。除了我描述的解决方法或重新附加onclick事件之外,是否有解决此问题的方法?
我很喜欢这个想法。当然比我的字符串解析方法更容易。尽管如此,我还是想知道为什么从父项中删除文本打破了儿童事件。 – jwiscarson 2010-10-07 14:48:04
很难准确地说,没有看到你的代码。我的猜测是,你正在做的一些方面是破坏和重新创建DOM元素,从而删除事件绑定。 – Ender 2010-10-07 15:18:21
如果(destinationDropDown.children())存在由于发布可怕的jQuery而使自己陷入尴尬的风险,那么您现在是: 函数DeselectComment(studentSid,value){ if(destinationDropDown.children()。长度== 1){ destinationDropDown .append(''); var parentSpan = sourceSpan.parent(); sourceSpan.remove();如果(parentSpan.text()。search(',')== 0){ parentSpan.html(parentSpan.html()。replace(',','')); } parentSpan.html(parentSpan.html()。replace(',',',')); } – jwiscarson 2010-10-07 21:02:41