nextUntil()和Self()wrap()...无法获取列表中的每个两个元素被span包裹?

时间:2011-04-24 01:23:44

标签: jquery-selectors

使用ajax复选框列表生成如此精细但复选框和标签有时会突破到新行并且只是尝试做一个简单的换行?:

<input type="checkbox" name="Pet.Color" value="44" id="cbxColor_44" title="Black">    <label>Black</label><input type="checkbox" name="Pet.Color" value="37" id="cbxColor_37" title="Blue"><label>Blue</label><input type="checkbox" name="Pet.Color" value="43" id="cbxColor_43" title="Brown"><label>Brown</label> .....

尝试将每个输入和标签包装在一个范围内,我不想搞乱生成每个输入和附加/前置跨度的函数在这里或那里,所以我试图用一个快速选择器来包装()方法:

 // nope  $('input ~ label').andSelf().wrap('<span class="nowrap" />')
//nope   $('input').nextUntil('label').wrap('<span class="nowrap" />')

//nope $('input').nextUntil('label').each(function (index) {
//    $(this).wrap('<span class="nowrap" />')
// });

// nope  $('input + label').andSelf().wrap('<span class="nowrap" />')

建议?

2 个答案:

答案 0 :(得分:5)

andSelf method只是将原始元素添加到从中选择的集合中 例如,$(something).children().andSelf()将选择元素的子元素以及它自身。

您需要遍历每一对并致电wrapAll

$('input').each(function() { 
    $(this).next().andSelf()    //Get the pair of elements
           .wrapAll('<span class="nowrap" />')
});

答案 1 :(得分:0)

这么简单: 我们在之前或之后插入标记,然后选择nextUntil()prevUntil()

  

$( “<li class='aa'>Test</li>”)insertAfter( '巴。');

     。

$( '富 ')nextUntil('。AA')andSelf()wrapAll( “<p>”);

     

$( “AA”)除去();

<ul>
    >     <li class="foo">Baz</li>
    >     <li>Select Me!</li>
    >     <li>Select Me!</li>
    >     <li>Select Me!</li>
    >     <li class="bar">Baz</li>
    >     <li>Don't Select Me</li>
    >     <li>Red Herring List Item</li> </ul>

<ul>
<p><li class="foo">Baz</li>
<li>Select Me!</li>
<li>Select Me!</li>
<li>Select Me!</li>
<li class="bar">Baz</li>
</p>
<li>Don't Select Me</li>
<li>Red Herring List Item</li>
</ul>