假设我有这个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;我只是想知道是否有快速的方法。
感谢。
答案 0 :(得分:3)
使用.text(),.prevUntil()和.nextUntil()
从点击的.MyClass
获取所有上一个和下一个.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()
与 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(', '));
});
答案 1 :(得分: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
元素(按顺序)。
答案 2 :(得分: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(', ') );
});