2015-08-27 4 views
0

Я пытаюсь получить предыдущий диапазон до текущего, мой код не работает.jQuery получить предыдущий диапазон

<span class="badge votes">0</span> 
<a href="#" id="up-vote"><span data-vote="up" data-count="0" class="glyphicon glyphicon-thumbs-up"></span></a> 
<a href="#" id="down-vote"><span data-vote="down" data-count="0" class="glyphicon glyphicon-thumbs-down"></span></a> 

То, что я хочу, когда я нажимаю span с class="glyphicon glyphicon-thumbs-up" и class="glyphicon glyphicon-thumbs-down", чтобы получить значение в промежутке с class="badge votes"

вот мой jQuery код

alert($(this).parent().find('span').text()); 

или alert($(this).prevAll('.votes:first').text());

+0

Являются ли эти элементы обернутыми в родительский элемент? Есть ли несколько таких блоков? –

ответ

1

$('.glyphicon').click(function(evt) { 
 
    alert($(this).parent().prevAll('.badge.votes').text()); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<span class="badge votes">0</span> 
 
<a href="#" id="up-vote"><span data-vote="up" data-count="0" class="glyphicon glyphicon-thumbs-up">Up</span></a> 
 
<a href="#" id="down-vote"><span data-vote="down" data-count="0" class="glyphicon glyphicon-thumbs-down">Down</span></a>

Ваш parent().find('span') будет идти до <a>, а затем посмотреть на пролет в своих детях. prevAll('.votes:first') ищет сестер текущего промежутка (у которого нет сестер). В обоих случаях вы застряли на одном уровне ниже, где вы хотите быть.

0

Вы можете использовать "ближайший" функцию JQuery, чтобы захватить промежуток, который вы ищете, как так:

$('span').on('click', function (ev) { 
    alert($(ev.currentTarget).closest('.badge.votes').html()); 
}); 

скрипку: https://jsfiddle.net/8xj3mt7k/

+1

Нет, они не могли, потому что '.badge.votes' не является предком цели клика. Вы проверили это? (Я сделал, он возвращает 'undefined'.) – Amadan

+0

На скрипке он работает. –

+0

Не так ли? Вы нажали на пробелы нулевой ширины, не так ли, и получили предупреждение, в котором говорится «0»? Магия. – Amadan

0

Вы можете сделать это следующим образом:

$(this).parent().siblings('.badge.votes'); 

Он выберет родственного брата <a> с badge votes.

span селектор может также работать.

0

Вот маленький грязный трюк:

$("#up-vote, #down-vote").on("click", (function(votesSpan) { 
    return function() { 
     alert(votesSpan.text()) 
    } 
}($("span.badge.votes")))) 

Fiddle: http://jsfiddle.net/z4sbhmn9/

Это может быть принято еще дальше и превратиться в метод полезности.

+0

Ну, вы предполагаете, что больше нет 'span.badge.votes' – MinusFour

+0

OP может уточнить селектор. –

+0

Нет, если каждый диапазон вверх/вниз их собственный значок (например, на Reddit). – Amadan

Смежные вопросы