javascript/jquery中的do-until形式

javascript/jquery中的do-until形式,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,我有一个保险单 <ul id="variants"> <a href="#" class="add_options right" data-id="70281696560900'>Add more </a> <input type="text" class="cat_name" onClick="prop()"> <li class="current"> <input id

我有一个保险单

<ul id="variants">
      <a href="#" class="add_options right" data-id="70281696560900'>Add more </a>
      <input type="text" class="cat_name" onClick="prop()">
      <li class="current">
           <input id="product_variants_attributes_1371725880992_name" size="30" type="text">
      </li>  
      <li class="current"> 
           <input id="product_variants_attributes_1371725883311_name" name="product[variants_attributes][1371725883311][name]" size="30" type="text"> 
      </li>
      <li> Add more link allows you to add more li's(options) </li>

      <input type="text" class="cat_name" onClick="prop()">
      <li class="current">
           <input id="product_variants_attributes_1371725880992_name" size="30" type="text">
      </li>  
      <li class="current"> 
           <input id="product_variants_attributes_1371725883311_name" name="product[variants_attributes][1371725883311][name]" size="30" type="text"> 
      </li>
</ul>
  • 添加更多链接允许您添加更多li(选项)
onclick函数
prop()
获取输入到该输入中的值(
cat\u name
),现在我只想在下一个输入之前用class
cat\u name
及其值(
.cat\u name.val()
)填充li输入字段。因此,它基本上会忽略下一个
.cat_name
后面的字段,只在它前面的li输入字段中填充它的值。
因此,在下一个之前填充所有li->input文本。它不能在它和下一个输入之间填充任何li->input

你会怎么做


谢谢。

如果您想设置下两个输入的值,您可以使用方法选择下一个同级
li
元素,直到下一个
输入
元素的类别为
cat\u name

$('input.cat_name').blur(function() {
    $(this).nextUntil('input.cat_name') 
           .find('input[type=text]') 
           .val(this.value);
});
还有一个
.previtil()
API,它选择指定选择器之前的同级


使用jquery

Thanksss,我不知道nextUntil。非常感谢你的帮助,我现在就试试。天哪,非常感谢,它很有魅力,似乎有人不喜欢你,即使你的答案很棒,也会投下一票。
    function prop() {
        //get the current input
        var source = $(this.event.currentTarget);
        //foreach sibling of this input until the next .catImage
        source.nextUntil('.cat_name').each(function () {
        //set the value of the input elements to source value
            $(':input', $(this)).val(source.val());
        });
    }