5

假设我有这个 HTML:

<div id="Wrapper">

  <div class="MyClass">some text</div>
  <div class="MyClass">some text</div>

  <div class="MyBorder"></div>

  <div class="MyClass">some text</div>
  <div class="MyClass">some text</div>
  <div class="MyClass">some text</div>

  <div class="MyBorder"></div>

  <div class="MyClass">some text</div>
  <div class="MyClass">some text</div>

</div>

我想按它们所在的顺序在单击的那个旁边获取 MyClass div 的文本。

这就是我所拥有的:

$('#Wrapper').find('.MyClass').each(function () {
  AddressString = AddressString + "+" + $(this).text();
});

我知道添加了所有 MyClass div;我只是想知道是否有一种快速的方法来做到这一点。

谢谢。

4

3 回答 3

3

使用.text().prevUntil()和.nextUntil( )

.MyClass要从clicked 获取所有上一个和下一个元素的文本.MyBorder

$('#Wrapper').on('click', '.MyBorder', function() {
  var AddressString = [];
  $(this).nextUntil('.MyBorder').text(function(index, text) {
       AddressString.push(text);
  });

  $(this).prevUntil('.MyBorder').text(function(index, text) {
       AddressString.push(text);
  });
  console.log(AddressString.join(', '));
});

prevUntil(),nextUntil()兄弟姐妹()的组合

$('#Wrapper').on('click', '.MyClass' function() {
    var AddressString = [];
    $(this).siblings('.MyClass').prevUntil('.MyBorder').add($(this).prevUntil('.MyBorder')).text(function(index, text) {
        AddressString.push(text);
    });
    console.log(AddressString.join(', '));
});
于 2012-05-27T16:31:52.987 回答
2

您可以使用.nextUntil().prevUntil()

$('#Wrapper').on('click','.MyClass', function(e){
    var self = $(this),
        previous = self.prevUntil('.MyBorder', '.MyClass'), // find the previous ones
        next = self.nextUntil('.MyBorder', '.MyClass'), // find the next ones
        all = $().add(previous).add(self).add(next); // combine them in order

    var AddressString = '';

    all.each(function(){
        AddressString += '+' + $(this).text();
    });

    alert(AddressString);

});

这将找到位于由元素分隔的同一组元素中的所有.MyClass元素(按顺序) 。.MyClass.MyBorder

演示在 http://jsfiddle.net/gaby/kLzPs/1/

于 2012-05-27T16:44:22.530 回答
1

如果您想获取边界内的所有兄弟姐妹,则以下工作:

$("#Wrapper").on("click", ".MyClass", function(){
    var strings = [];
    $(this)
        .add( $(this).prevUntil(".MyBorder") )
        .add( $(this).nextUntil(".MyBorder") )
        .text(function(i,t){
            strings.push( t );
        });
    alert( strings.join(', ') );
});​

小提琴:http: //jsfiddle.net/Uw5uP/3/

于 2012-05-27T16:50:32.293 回答