0

これは修正されました。貧弱なプログラミングでした。関数を2回呼び出していました。そのため、クラスを削除していましたが、関数が2回目に実行されたときにクラスを読み込んでいました。私の貧弱なプログラミングで申し訳ありません。助けようとしてくれてありがとう。親切な人たちのおかげで、スタックオーバーフローが大好きです!

わかりましたので、私は何かを理解しようとしていますが、それを解決するのを妨げているのは私の風邪かもしれません. 私がやっていることは、ユーザーがクラスを追加するものを選択したときです。しかし、彼らがもう一度選択した場合は、クラスを削除したいと思います。だから私は true を返す要素 hasClass かどうかを確認しましたが、removeClass を実行しても何もしません...

JS を次のように変更します。Selectedindex と index が一致していること、および「option-select」の removeClass が何らかの理由でスキップ/無視されていることを確認できることを示すため。removeClass("option") と言うように変更できますが、問題なく動作しますが、 removeClass("option-selected") はできません

$(obj.find('.option')).each(function(Selectedindex) {
    if ($(this).hasClass('option-selected') && Selectedindex == index) {
        $(this).removeClass('option-selected');
        console.log(Selectedindex+" == "+index);
    }
});

要素が選択されると、インデックスが関数に渡されます。

ここにHTMLの一部があります

<div id="MultipleSelect-HTML" class="dropdown container" multiple="multiple" style="width: 100%;">
    <ul class="options" style="width: 100%; display: block; position: relative;">
        <li>
            <a class="option option-selected"> 
                <input class="option-value" type="hidden" value="0"> 
                <img class="option-image" src="http://cdn1.iconfinder.com/data/icons/inside/PNG/032x032/icontexto-inside-facebook.png"> 
                <label class="option-text" style="cursor:pointer;">Facebook</label> 
                <small class="option-description desc">Check out my Facebook page!</small>
            </a>
        </li>
        <li>
            <a class="option option-selected"> 
                <input class="option-value" type="hidden" value="1"> 
                <img class="option-image" src="http://cdn1.iconfinder.com/data/icons/inside/PNG/032x032/icontexto-inside-twitter.png"> 
                <label class="option-text" style="cursor:pointer;">Twitter</label> 
                <small class="option-description desc">Check out my Twitter page!</small>
            </a>
        </li>
        <li>
            <a class="option"> 
                <input class="option-value" type="hidden" value="2"> 
                <img class="option-image" src="http://cdn1.iconfinder.com/data/icons/inside/PNG/032x032/icontexto-inside-linkedin.png"> 
                <label class="option-text" style="cursor:pointer;">LinkedIn</label> 
                <small class="option-description desc">Check out my LinkedIn page!</small>
            </a>
        </li>
        <li>
            <a class="option"> <input class="option-value" type="hidden" value="3"> 
                <img class="option-image" src="http://cdn1.iconfinder.com/data/icons/inside/PNG/032x032/icontexto-inside-flickr.png"> 
                <label class="option-text" style="cursor:pointer;">Flickr</label> 
                <small class="option-description desc">I don't have a flicker Page :(</small>
            </a>
        </li>
    </ul>
</div>

この情報はすべて JavaScript を使用して動的に生成されることに注意してください。

ご協力いただきありがとうございます。

4

2 に答える 2

2

hasClass for を実行していますが、removeClass を実行option-selectedしようとしていますdd-option-selected

だとするとdd-option-selected、以下のように変更して、

$(obj.find('.option')).each(function(Selectedindex) {
    if ($(this).hasClass('dd-option-selected') && Selectedindex == index)
        $(this).removeClass('dd-option-selected');
});

ええ、おかげで修正しました...しかし、まだ機能しません。他のアイデアはありますか?– ロバート・E・マッキントッシュ

これに dd-option-selected があり、クラスを削除していない場合、Selectedindex は index と等しくありません – Vega

于 2012-11-27T15:54:53.080 に答える
1

でチェックしていますhasClass option-selectedremoving dd-option-selectedyou should check dd-option-selected

あなたの状態はそうでしょう。

if ($(this).hasClass('dd-option-selected') && Selectedindex == index)
        $(this).removeClass('dd-option-selected');

クラス名がわからず、クラス名が重要でない場合は、 removeAttr を使用してクラスを削除できます

$(this).removeAttr('class');
于 2012-11-27T15:54:58.497 に答える