2013-09-09 3 views
1

Пытается найти элемент с jquery и попал в блокпост.JQuery найти ссылку привязки с href идентификатора другого элемента

У меня есть переменная с другими хранимыми в ней элементами id. Я пытаюсь найти соответствующую привязку с этой хранимой переменной, так как это href. Затем установите привязку (href) непосредственно перед этим якорем.

Поэтому в основном найти якорную ссылку элемент списка, предшествующий анкерной связи элемента списка с идентификатором отображаемого DIV

.html

<li><a href="#example" class="links">example</a></li> 
<li><a href="#example1" class="links">example</a></li> 
<li><a href="#example2" class="links">example</a></li> 
<li><a href="#example3" class="links">example</a></li> 

<div id="example" class="divs"> random stuff </div> 
<div id="example1" class="divs open"> random stuff </div> 
<div id="example2" class="divs"> random stuff </div> 
<div id="example3" class="divs"> random stuff </div> 

.js

$('.previous').click(function(e) { 
    e.preventDefault(); 
    var exampleId = $('.divs.open').attr('id'); 
    var anchorPrev = $('.links').find('href'); 
}); 
+0

и вопрос/проблема? – MimiEAM

ответ

3

Попробуйте это :

$('.previous').click(function (e) { 
    e.preventDefault(); 
    var exampleId = $('.divs.open').attr('id'); 
    var selector = "a.links[href='#" + exampleId + "']"; 
    var link = $(selector); 
    var prev = link.parent().prev().find('a.links');  
}); 

Что это значит, скажите jQuery, чтобы найти привязывающий тег с указанным значением его атрибута href.

Вы можете увидеть документы здесь: http://api.jquery.com/attribute-equals-selector/

EDIT Ok я вижу. Я отредактировал образец кода выше, чтобы отразить исходный вопрос о получении предыдущей ссылки. Обратите внимание, однако, что это не будет работать для первого элемента в списке.

Проблема заключается в том, что ваши теги a являются дочерними элементами li тегов. Поэтому вызов prev() непосредственно на a не будет работать, поскольку у него нет братьев и сестер. Тем не менее, у родителя li тэг есть, у вас есть братья и сестры, поэтому вы можете позвонить prev(), а затем получить элемент a.links, содержащийся внутри.

Вот jsFiddle, что я взбитый до испытания: http://jsfiddle.net/kHnju/

+0

Я не думаю, что это правильно. Я уверен, что OP хочет предыдущий элемент, а не текущий. Кроме того, зачем использовать find так, когда вы можете просто захватить '.eq()' элемента, так как они точно такие же? – Ohgodwhy

+0

Довольно уверен, что он хочет 'a.links', который имеет' href', который соответствует 'id' текущего элемента' .open'. – rossipedia

+0

Не могли бы вы тогда посоветовать мне, как «Тогда закрепите ссылку привязки (href) непосредственно перед этим якорем.» Играет в это? – Ohgodwhy