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

删除记下的并添加一个

$(".xyp li a").on("click", function() {
    $("#pps_ToggledIcon").removeClass('pisp_f pisp_p pisp_o').addClass(this.title);
});

注意:如果您可以删除所有类,包括“其他”pISImage 类,请使用 adeneo 的解决方案 - 很难判断删除/添加是否会引入一些不需要的效果或破坏其他代码(基于该类的事件管理,视觉表现等)

于 2013-03-21T23:07:04.343 回答
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 回答