如何在每个复选框后获得四个以下文本输入?

时间:2011-01-13 14:17:27

标签: javascript jquery

我正在遍历这样的复选框:

$('.day').each(function() {
// here I need to get the following 4 text inputs in the HTML 
    // and set some attributes on them      
});

每个复选框后都有四个文本输入字段(还有一些div,span围绕它们的span标签)。因此,在上面的循环中,我需要在HTML源代码中的复选框后面输入四个文本输入字段,以便我可以在它们上设置一些属性。

我该怎么做?

5 个答案:

答案 0 :(得分:3)

很难说没有标记,但你可以试试这个。

$('.day').each(function() {
    $(this).nextAll('input').slice(0,4).attr('someAttribute','somevalue');    
});

如果有一个停止点,就像另一个.day元素一样,您可以使用nextUntil然后使用.filter()

$('.day').each(function() {
    $(this).nextUntil('.day').filter('input').attr('someAttribute','somevalue');    
});

编辑当你说有一些<div>和其他标签 围绕 时,我认为你的意思是 介于 之间。

如果您实际上说输入 嵌套在 中,那么您可以执行以下操作:

$('.day').each(function() {
    $(this).nextAll(':has(input)').slice(0,4).find('input').attr('someAttribute','somevalue');    
});

或者也许这样:

$('.day').each(function() {
    $(this).nextAll().find('input').slice(0,4).attr('someAttribute','somevalue');    
});

或者,如果有停止点,您可以像其他.day一样表示,请使用nextUntil()

$('.day').each(function() {
    $(this).nextUntil('.day').find('input').attr('someAttribute','somevalue');    
});

答案 1 :(得分:1)

如果他们是父容器中的兄弟姐妹,您可能可以使用$(this).nextAll('input').each(function(){});$(this).nextAll().find('input').each(function(){});,具体取决于您的html结构。或var p = $(this).parent(); if (p && p[0]) p[0].find('input').each(function(){});

答案 2 :(得分:1)

这是一个总猜测,因为你没有显示任何标记:

$('.day').each(function() {
    var $this = $(this);
    var $inputs = $this.nextAll('input[type=text]');
    $inputs.each(function () {
        // do whatever with the inputs here
    });
});

答案 3 :(得分:1)

如果您尝试将css属性设置为输入,则可以使用非常强大的css选择器,例如

.day ~ input {
  //set your styles for the input
}

这意味着您在.day

之后选择了所有输入

希望这会有所帮助。

答案 4 :(得分:1)

尝试

$('.day').each(function() {
     // get input fields
     var first_input = $(this).nextAll().filter('input:first');
     var second_input = first_input.nextAll().filter('input:first');
     var third_input = second_input.nextAll().filter('input:first');
     var fourth_input = third_input.nextAll().filter('input:first');

     // set attribute xyz to value
     first_input.attr('xyz', 'value');
     second_input.attr('xyz', 'value');
     third_input.attr('xyz', 'value');
     fourth_input.attr('xyz', 'value');
});