【发布时间】:2013-09-21 03:01:46
【问题描述】:
我有一个 ASP.NET TreeView 控件,并且在某些时候向span 元素添加了一个 CSS 类,以提醒客户端代码禁用树中的复选框。完成并开始工作。
问题是CSS 类充当禁用复选框的标志,需要删除。执行此操作的 jQuery 看起来很简单。
我已阅读以下内容,这似乎是一个显而易见的解决方案: jQuery Remove CSS Class from all Descendants at once
这是渲染的源代码(其中一部分 - TreeView 很大,只要知道这些 <span> 元素是 TreeView 的后代:
<div id="MainContent_MyTreeView">
.....
<span class="disabledTreeviewNode">
所以我有以下jQuery 在需要删除此类时被击中客户端:
function EnableAllCheckBoxes(treeviewClientID) {
$(treeviewClientID).removeClass('disabledTreeviewNode');
}
我也尝试过以下变体:
$(treeviewClientID + ' span').removeClass('disabledTreeviewNode');
和:
$(treeviewClientID + ' span').removeClass();
和:
$(treeviewClientID).removeClass();
不幸的是,在我检查页面并运行 jQuery 之后,该类并没有被删除:
<div id="MainContent_MyTreeView" onclick="OnTreeClick(event)">
<table style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px;" cellspacing="0" cellpadding="0">
<div id="MainContent_MyTreeViewn0Nodes" style="display: block;">
<table style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px;" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<td>
<td>
<input name="MainContent_MyTreeViewn1CheckBox" id="MainContent_MyTreeViewn1CheckBox" type="checkbox"/>
<span id="MainContent_MyTreeViewst1" style="font-weight: bold; text-decoration: none;">
<span class="disabledTreeviewNode">
Text - My Description
我需要删除的类如下底部<span>
<span class="disabledTreeviewNode">
我也尝试了以下方法,但也没有用:
**$(treeviewClientID + ' span').filter(function () {
return $(this);
}).removeClass('disabledTreeviewNode');**
treeviewClientID 的值是正确的,因为我已经使用它来操作树的其他部分,以便该值正常工作且正确。
知道为什么没有在 TreeView 控件中的子 <span> 元素上删除该类,或者我可能做错了什么吗?
编辑: 将完整的 HTML 添加到 <span>,其中没有删除类。
【问题讨论】:
-
spans 是
MainContent的直接后代还是深入到 DOM 中? -
人们在黑暗中刺伤。向我们展示树视图的渲染 html,以便我们查看层次结构。
-
@Archer - 来自 ASP.NET 的 TreeView 最终会变得很大,并且很难在此处发布所有内容。这就是我试图瘦身的原因。
-
@Archer - 我添加了完整的 HTML 和我尝试过的另一个 jQuery 函数,但它仍然没有删除该类。
-
我现在不在电脑前。等我回家再看看:)