0

ASP.NET TreeView コントロールがあり、特定の時点で CSS クラスがspan要素に追加され、クライアント側のコードにツリーのチェックボックスを無効にするよう警告します。完了し、動作しています。

問題は、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>、または間違っている可能性があることについて何か考えはありますか?

編集:<span>クラスが削除されていない完全な HTML を追加しました。

4

2 に答える 2

0

リスト自体からではなく、リストの子孫からクラスを削除したい。その場合、次を使用する必要があります。

function EnableAllCheckBoxes(treeviewClientID) {
     $('span.disabledTreeviewNode', '#' + treeviewClientID).removeClass('disabledTreeviewNode');
  }

これが意味すること:以下に存在するspanCSS クラスを持つすべての CSS クラスが削除されます。disabledTreeviewNode#treeviewClientIDdisabledTreeviewNode


デバッグしましょう!

関数を次のように変更します。

function EnableAllCheckBoxes(treeviewClientID) {
     console.log(treeviewClientID);
     console.log($('span.disabledTreeviewNode', treeviewClientID));
     $('span.disabledTreeviewNode', treeviewClientID).removeClass('disabledTreeviewNode');
  }

F12 を押して、 [コンソール] タブに移動し、ページを更新します。コンソールに記録された内容を確認し、トラブルシューティングを試みます。


編集

あなたが質問に追加したHTMLに基づいて、私はそれを確信しています

$('span.disabledTreeviewNode', '#MainContent_MyTreeView').removeClass('disabledTreeviewNode');

うまくいくはずです。実際、ここで質問でコンソールを開いて実行すると、

$('pre.prettyprint', '#question').removeClass('prettyprint');

期待どおりに動作することがわかります。同じロジックです。

そこに何か他のことが起こっているかどうかを調べてもらえますか?

于 2013-09-19T18:48:08.507 に答える