0

やあ...

  要素とその子の背景色を変更しようとしているので、function再帰的に呼び出されるを作成しました。 要素に属性または
  が含まれている場合、要素の背景色を変更してはならないいくつかの条件を次に示します。class="irmNDrdnVal"id="irmNDatePickerContainer"

コードは次のとおりです。

<!DOCTYPE HTML PUBLIC>
<html>
<style>
 .newClass{
  color:red;
  background:green;
 }
</style>
  <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.js"></script>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.js"></script>
<body>
<div id="main">
  <span id= "drdn-box-ACNT" class="irmNDrdnInputBox" disabled= "true">
      <input id="drdn-ip-ACNT" class="irmNDrdnInput" readOnly="readOnly" value="1 IA" type="text">
      <span><img src="/sap/bc/bsp/sap/public/drdn-btn.gif"></span>
  </span>
  <div id= "drdn-val-ACNT" class="irmNDrdnVal">
        <div>
            <ul>
                <li disabled= "true" key= "">&nbsp;</li>
                <li disabled= "true" key= "1">1 IA</li>
                <li disabled= "true" key= "2">2 PB &amp; CB</li>
                <li disabled= "true" key= "3">3 DM-P</li>
                <li disabled= "true" key= "4">4 DM-R</li>
                <li disabled= "true" key= "5">5 Cash App</li>
            </ul>
        </div>
  </div>
</div>


<script>
  function changeBgColor(_ele,_cls,_remove){
    if(_remove){
     _ele.removeClass(_cls);
    }
    else{
     if(!_ele.hasClass('ui-resizable-handle') && !_ele.hasClass('irmNDrdnVal') && _ele.attr('id') != 'irmNDatePickerContainer'){
         _ele.addClass(_cls);
     }
    }
    if(_ele.children().length > 0 && !_ele.hasClass('irmNDrdnVal') && _ele.attr('id') != 'irmNDatePickerContainer'){
      changeBgColor(_ele.children(),_cls,_remove);
    }
  }

 $('div#main').each(function(){
   changeBgColor($(this),'newClass',false);
 });

</script>
</body>
</html>

そのため、特定の要素にクラスがあるかどうかを確認しています。irmNDrdnValクラスがない場合にのみ、背景を変更でき'irmNDrdnVal'ます。

1つの要素を除くすべての要素が機能しています。

<span id= "drdn-box-ACNT" class="irmNDrdnInputBox" disabled= "true">

  クラスはありませんが'irmNDrdnVal'hasClass('irmNDrdnVal')メソッドはtrue要素を返します。

  whtzがうまくいかないのが理解できません。

誰かが私を助けることができますか.....事前に感謝します...

4

1 に答える 1

2

ええと、コードは読めませんが、問題はここにあると思います:

changeBgColor(_ele.children(), _cls, _remove);

すべての子をchangeBgColorに渡すと、すべてが_ele(jQueryの要素セット)になり、子要素の1つだけがクラスirmNDrdnValを持つ場合、_ele.hasClass('irmNDrdnVal')は次の場合にtrueを返します。セット全体。次のように変更してみてください

_ele.children().each(function(){
   changeBgColor($(this), _cls, _remove);
})

また、デバッグの目的でコードを読みやすくするようにしてください;)

于 2012-12-29T08:10:39.253 に答える