代码之家  ›  专栏  ›  技术社区  ›  kayteen

如何使用jquery选择唯一的DIV并取消选择其余的DIV?

  •  2
  • kayteen  · 技术社区  · 15 年前

    您好,我正在使用jquery用户界面的“可选”功能,我有多个垂直对齐的分区作为列表,在选择每个分区时,分区的背景将变为粉红色,当我选择另一个分区时,以前选择的分区将变为白色背景。到目前为止,我已经实现了我所需要的,但问题是每个功能。如果我有100个div,它会循环100次,并检查下面的条件。 我的问题是,如何避免这种循环,并做出独特的选择(即,没有两个div应该有相同的颜色)。

    $(".selectDiv").click(function(){
        var clkLink = this.id;
        $(".selectDiv").each(function(){
            var clkLink2 = this.id;
            if(clkLink != clkLink2)
                $(clkLink2).css("background","#FF00CC");
            else
                $(clkLink2).css("background","#FFFFFF");
        });
    });
    
    5 回复  |  直到 15 年前
        1
  •  8
  •   Jimmy Stenke    15 年前

    如果将颜色作为CSS类,则很容易做到:

    $('.selectDiv').click(function(){
       $('.isSelected').removeClass('isSelected');
       $(this).addClass('isSelected');
    });
    
        2
  •  1
  •   karim79    15 年前

    这将全部重置,然后更改当前单击的:

    $(".selectDiv").click(function(){
        $(".selectDiv").css("background","#FFFFFF");
        $(this).css("background","#FF00CC"); 
    });
    
        3
  •  0
  •   redsquare    15 年前

    如果添加类而不是更改CSS,则可以根据选择器中的类名进行筛选。

        4
  •  0
  •   RaYell    15 年前
    var currentDiv = null;
    
    $('div.selectDiv').click(function() {
        if (currentDiv !== null) {
            currentDiv.css('background', '#ff00cc');
        }
        currentDiv = $(this);
        currentDiv.css('background', '#ffffff');
    });
    
        5
  •  0
  •   Phil.Wheeler    15 年前

    您的jQueryUI可选择的单击事件不应使用Div的单击事件自动分配。可选功能有自己的事件绑定,称为“停止”。

    var previousSelection = {}; // Use this to store the previous selection if desired
    
    $('#selectDiv-Container').selectable({
                        stop: function() {
                            previousSelection = $(this);
                            $('.ui-selected', this).each(function() {
                                // Iterate through my new selections if desired.
                            });
                        }
                    });
    

    我假设您的可选择列表中有一个名为“selectDiv container”的容器,以便进行说明。如果要将以前单击的项保存在内存中(以设置其样式或其他方式),可以将其缓存在上述变量中。( previousSelection )

    当用户单击列表时,“停止”事件将触发。您可以迭代所有选定的值,并在该点设置它们的样式。