如果Jquery元素的属性值为1或更高并放在底部,则对它们进行排序

时间:2014-02-22 00:24:12

标签: javascript jquery

我有一个场景,如果它的属性值为1或更高,我需要对jquery元素进行排序

selectors = "a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]";
var test = $("body").find(selectors);

现在我需要对测试变量进行排序,如果它的属性tabindex为1或更高,并按顺序放置在Array或object的底部

注意:如果tabindex为0

,请不要排序

为什么我需要这个?

这将帮助我确定身体中最后一个可聚焦的元素。

我知道这是一个棘手的问题,但我没有看到任何其他方法来找到最后一个可聚焦的元素

2 个答案:

答案 0 :(得分:0)

试试这个:

selectors = "a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]";
var test = $("body").find(selectors);
test.sort(function(a,b) {
   // Replace b and a below if you wan't descending order
   return $(b).attr("tabindex") < $(a).attr("tabindex");
});

答案 1 :(得分:0)

我正在回答我自己,因为这可能会帮助有需要的人

我所做的是我添加了一个将tabindex 0分开的变量

selectors = "a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex=0], *[contenteditable]",
higherselectors = "*[tabindex]:not([tabindex=0]):not([tabindex=-1])";
var test1 = $("body").find(selectors);
var test2 = $("body").find(higherselectors);
if(test2.length) {
  test2.toArray().sort(function(a, b) {
        return $(a).attr('tabindex') < $(b).attr('tabindex');
  });
}

最后,身体的第一个可聚焦元素将是test2 [0],并且身体的最后一个可聚焦元素将是test1 [test.length-1]

请检查适当的条件