0

ユーザーがクリックした要素classの位置を保持して保存しました。タグがクリックされたときに、その値を取得し、要素タグにクラスとして追加したいと考えています。以下の図のようにやってみましたが、多くのコードにこのように感じます。これを可能な限り最短のワットで行うにはどうすればよいでしょうか? iaaattri

    <i id="pps_ToggledIcon" class="pisp_p pISImage"></i>

    <li class="privListItem checkedList selectedList li_public">
        <a href="/p" class="psLink" title="pisp_p">
            <span class="privLabel">PP</span>
        </a>
    </li>
    <li class="privListItem checkedList selectedList li_public">
        <a href="/f" class="psLink" title="pisp_f">
            <span class="privLabel">F</span>
        </a>
    </li>
    <li class="privListItem checkedList selectedList li_public">
        <a href="/o" class="psLink" title="pisp_o">
            <span class="privLabel">O</span>
        </a>
    </li>

JSはこちら

    $(".xyp li a").on("click", function(e) {
       var pIcnSltd = $(this).attr("title"); 
       var pTIcn = $("#pps_ToggledIcon");
       if (pTIcn.hasClass("pisp_f") || pTIcn.hasClass("pisp_o")) {
            pTIcn.removeClass("pisp_f");
            pTIcn.removeClass("pisp_o");
            pTIcn.addClass("pisp_p");
        }
        else if (pTIcn.hasClass("pisp_p") || pTIcn.hasClass("pisp_o")) {
            pTIcn.removeClass("pisp_p");
            pTIcn.removeClass("pisp_o");
            pTIcn.addClass("pisp_f");
        }
        else if (pTIcn.hasClass("pisp_p") || pTIcn.hasClass("pisp_f")) {
            pTIcn.removeClass("pisp_p");
            pTIcn.removeClass("pisp_f");
            pTIcn.addClass("pisp_f");
        }
    });
4

3 に答える 3

1

pISImageすべてのクラスを削除してから、クリックしたアンカーのタイトルと一緒にクラスをクラスとして追加し直してはどうでしょうか。

$(".xyp li a").on("click", function() {
    $("#pps_ToggledIcon").removeClass().addClass('pISImage '+this.title);
});
于 2013-03-21T22:55:45.530 に答える
0

jQuery はメソッド チェーンをサポートしています。

$(".xyp li a").on("click", function(e) {
       var pIcnSltd = $(this).attr("title"); 
       var pTIcn = $("#pps_ToggledIcon");
       if (pTIcn.hasClass("pisp_f") || pTIcn.hasClass("pisp_o")) {
            pTIcn.removeClass("pisp_f").removeClass("pisp_o").addClass("pisp_p");
        }
        else if (pTIcn.hasClass("pisp_p") || pTIcn.hasClass("pisp_o")) {
            pTIcn.removeClass("pisp_p").removeClass("pisp_o").addClass("pisp_f");
        }
        else if (pTIcn.hasClass("pisp_p") || pTIcn.hasClass("pisp_f")) {
            pTIcn.removeClass("pisp_p").removeClass("pisp_f").addClass("pisp_f");
        }
    });

===ただし、最短が常に最善であるとは限らないことに注意してください。また、あなたの論理は私には非常に複雑に見えます。あなたが何をしようとしているのかを解読しようとさえしませんでした。

このコードを単純化したい場合は、ロジックを再検討することから始めるべきです。

于 2013-03-21T22:44:23.680 に答える