2012-05-27 38 views
5

Giả sử tôi có HTML này:.jQuery: Chọn anh chị em ngay lập tức

<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> 

Tôi muốn nhận được văn bản của các div MyClass bên cạnh một trong những nhấp vào, theo thứ tự họ đang ở

Đây là những gì tôi có:

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

Tôi biết thêm TẤT CẢ các div MyClass; Tôi chỉ tự hỏi nếu có một cách nhanh chóng để làm điều đó.

Cảm ơn.

+1

tiếp theo và trước đó? hoặc các phần tử giữa các phần tử 'myborder' –

+0

Bạn có thể sử dụng' .siblings() 'để trả về * các phần tử * anh em. – Jivings

+0

Bạn có thể đặt một số văn bản khác trong các phần tử của mình không, và sau đó trình bày những gì bạn muốn đầu ra là? –

Trả lời

3

Sử dụng .text(), .prevUntil().nextUntil()

Để có được văn bản của tất cả các yếu tố .MyClass trước và tiếp theo từ nhấp .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(', ')); 
}); 

Sự kết hợp của prevUntil(), nextUntil() với siblings()

$('#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(', ')); 
}); 
2

Bạn có thể sử dụng .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); 

}); 

này sẽ tìm thấy tất cả các yếu tố .MyClass (để) nằm trong cùng một nhóm .MyClass yếu tố tách bởi .MyBorder yếu tố.

Demo tạihttp://jsfiddle.net/gaby/kLzPs/1/

1

Nếu bạn đang muốn có được tất cả anh chị em rằng nằm trong biên giới, các công việc sau:

$("#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(', ')); 
});​ 

Fiddle: http://jsfiddle.net/Uw5uP/3/

Các vấn đề liên quan