如何以最短的方式完成?

时间:2013-03-21 22:41:07

标签: jquery html css

我已保存class保留用户点击的ia元素位置的a。单击attr标记后,我想获取其i的值,并将其作为类添加到 <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> 元素标记中。我已经尝试过如下图所示,但我觉得这很多代码。如何在最短的扫描仪上完成?

    $(".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");
        }
    });

这是JS

{{1}}

3 个答案:

答案 0 :(得分:1)

如何删除所有类,然后将pISImage类与单击的锚点标题一起添加回类:

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

答案 1 :(得分: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");
        }
    });

但要记住,最短的并不总是===最好。而且,你的逻辑对我来说看起来很复杂,我甚至懒得试图破译你想要做的事情。

如果您想简化此代码,您应该首先重新考虑您的逻辑。

答案 2 :(得分:0)

删除注明的内容并添加一个

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

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