选择一组元素并使用 jQuery 分配一个类

发布于 2024-12-20 14:21:42 字数 900 浏览 0 评论 0原文

所以我想做的是将表单分成不同的部分,并使用 jQuery 显示/隐藏。 我有这样的事情:

我无法更改这一点:

<div class="form_row"></div>
<div class="form_row"></div>
<div class="form_row"></div>
<div class="form_row"></div>
<div class="form_row"></div>
<div class="form_row"></div>
<div class="form_row"></div>
<div class="form_row"></div>

使用 jQuery,我想选择前 4 个 div 并将类“sec_1”分配给这些 div,将“sec_2”分配给最后四个 div。

我尝试过做这样的事情:

$('form_row').get(0).addClass("sec_1");
$('form_row').get(1).addClass("sec_1");
$('form_row').get(2).addClass("sec_1");
$('form_row').get(3).addClass("sec_1");
$('form_row').get(4).addClass("sec_2");
$('form_row').get(5).addClass("sec_2");
$('form_row').get(6).addClass("sec_2");
$('form_row').get(7).addClass("sec_2");

但这没有用。有什么想法吗?

多谢! 一个。

So what I'm trying to do is break a form into different sections, and show/hide using jQuery.
I have something like this:

I can't change this:

<div class="form_row"></div>
<div class="form_row"></div>
<div class="form_row"></div>
<div class="form_row"></div>
<div class="form_row"></div>
<div class="form_row"></div>
<div class="form_row"></div>
<div class="form_row"></div>

With jQuery I would like to select the first 4 divs and assign a class 'sec_1' to those divs and 'sec_2' to the last four.

I've tried doing something like this:

$('form_row').get(0).addClass("sec_1");
$('form_row').get(1).addClass("sec_1");
$('form_row').get(2).addClass("sec_1");
$('form_row').get(3).addClass("sec_1");
$('form_row').get(4).addClass("sec_2");
$('form_row').get(5).addClass("sec_2");
$('form_row').get(6).addClass("sec_2");
$('form_row').get(7).addClass("sec_2");

But that didn't work. Any ideas?

Thanks a lot!
A.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

过期情话 2024-12-27 14:21:42

您的 class 选择器缺少前导 .。此外,无需将其拆分得太多并获取各个元素。

var $rows = $('.form_row');
$rows.filter(":lt(4)").addClass("sec_1");
$rows.filter(":gt(3)").addClass("sec_2");

或更简洁:

$('.form_row').filter(":lt(4)").addClass("sec_1")
    .end().filter(":gt(3)").addClass("sec_2");

编辑:阅读 jquery 文档中的注释后,性能会更好:

$('.form_row').slice(0,4).addClass("sec_1")
    .end().slice(4).addClass("sec_2");

http://jsfiddle.net/bstQ5 /

Your class selector is missing the leading .. Also, no need to split it up so much and grab individual elements.

var $rows = $('.form_row');
$rows.filter(":lt(4)").addClass("sec_1");
$rows.filter(":gt(3)").addClass("sec_2");

or more concisely:

$('.form_row').filter(":lt(4)").addClass("sec_1")
    .end().filter(":gt(3)").addClass("sec_2");

EDIT: After reading the note in the jquery docs, even better performance:

$('.form_row').slice(0,4).addClass("sec_1")
    .end().slice(4).addClass("sec_2");

http://jsfiddle.net/bstQ5/

苏璃陌 2024-12-27 14:21:42

循环遍历每个选定的元素,如果索引等于或小于 3,则添加类 sec_1,否则添加类 sec_2。

工作 JSFiddle
http://jsfiddle.net/CvTb6/

HTML:

<div class="form_row">1</div>
<div class="form_row">2</div>
<div class="form_row">3</div>
<div class="form_row">4</div>
<div class="form_row">5</div>
<div class="form_row">6</div>
<div class="form_row">7</div>
<div class="form_row">8</div>

jQuery:

// Notice the '.' in front of the 'form_row', this indicates we are looking for a Class.
$('.form_row').each(function(index, value){ // For each .form_row selected
    if(index <= 3) // If index is equal to or less then 3
    {
        $(this).addClass("sec_1"); // Add this class
    }
    else
    {
        $(this).addClass("sec_2"); // Else add this class
    }
});

Loop over each selected element, if the index is equal to or less then 3, add class sec_1, else add class sec_2.

Working JSFiddle
http://jsfiddle.net/CvTb6/

HTML:

<div class="form_row">1</div>
<div class="form_row">2</div>
<div class="form_row">3</div>
<div class="form_row">4</div>
<div class="form_row">5</div>
<div class="form_row">6</div>
<div class="form_row">7</div>
<div class="form_row">8</div>

jQuery:

// Notice the '.' in front of the 'form_row', this indicates we are looking for a Class.
$('.form_row').each(function(index, value){ // For each .form_row selected
    if(index <= 3) // If index is equal to or less then 3
    {
        $(this).addClass("sec_1"); // Add this class
    }
    else
    {
        $(this).addClass("sec_2"); // Else add this class
    }
});
稍尽春風 2024-12-27 14:21:42

试试这个:

$('.form_row:nth-child(1),.form_row:nth-child(2),.form_row:nth-child(3),.form_row:nth-child(4)').addClass('sec_1');
$('.form_row:nth-child(5),.form_row:nth-child(6),.form_row:nth-child(7),.form_row:nth-child(8)').addClass('sec_2');

try this:

$('.form_row:nth-child(1),.form_row:nth-child(2),.form_row:nth-child(3),.form_row:nth-child(4)').addClass('sec_1');
$('.form_row:nth-child(5),.form_row:nth-child(6),.form_row:nth-child(7),.form_row:nth-child(8)').addClass('sec_2');
穿越时光隧道 2024-12-27 14:21:42

首先,您的 类选择器 应该是 .form_row,而不是 form_row,它将匹配所有 元素。

现在,您可以使用 indexget() > each() 提供的参数:

$(".form_row").each(function(index) {
    $(this).addClass("sec_" + Math.floor(index / 4 + 1));
});

First, your class selector should be .form_row, not form_row, which would match all <form_row> elements.

Now, instead of multiple calls to get(), you can use the index argument provided by each():

$(".form_row").each(function(index) {
    $(this).addClass("sec_" + Math.floor(index / 4 + 1));
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文