使用没有特定类的jQuery收集所有“可见”表单元素的最佳方法?

时间:2010-10-19 14:44:34

标签: jquery

我正在尝试在给定表单上重新分配新的制表符索引。为此,我想排除任何不可见(不可见)的表单元素 - 并排除任何具有特定类(“.offscreen”)的表单元素。

我正在尝试这种方法 - 但是,它不起作用(也许不是最有效的方法)。

function reassignTabOrders() {
    var tabindex = 1;
    $j('input,select,textarea').not('.offscreen').each(function() {
        var $input = $j(this);
        if ($input.is(':visible')) {
            $input.attr("tabindex", tabindex);
            tabindex++;
        }
    });
};

有什么想法吗?

1 个答案:

答案 0 :(得分:10)

您可以使用:visible选择器和:input,如下所示:

function reassignTabOrders() {
  $j(':input:visible:not(.offscreen)').each(function(i) {
     this.tabIndex = i+1;
  });
}

这也使用.each()函数提供的索引来回调,不需要自己维护一个单独的变量:)在以后的jQuery版本中你可以使用函数缩短它(但不是那么快)使用.attr(),就像这样:

function reassignTabOrders() {
  $j(':input:visible:not(.offscreen)').attr("tabindex", function(i) {
    return i+1;
  });
}