2016-02-13 4 views
0

У меня есть поиск по всему сайту на этом сайте, но не могу найти ответ на мой вопрос ... Допустим, у меня есть следующий селектор $('#me').parents().eq(2).children().eq(1).children().eq(0).children().eq(0); Как бы я мог превратить выбранный элемент в string - «joey», поэтому я мог бы это сделать: $(joey);? Все элементы являются div и ни один из них не имеет класса или id.Селекторы родительских и дочерних JQuery

Я хочу, чтобы сохранить строковые переменные в массив, а затем соединить их вместе, так что я могу добавить функцию, нажмите:

var divs=['#me','#sister','#brother']; 
var divsSel=[];var divs2=[];var ds=''; 
$(divs).each(function(i,v){ 
    dS=$(v).parents().eq(2).children().eq(1).children().eq(0).children().eq(0); 
    ds=...;\\CODE TO TURN SELECTOR INTO STRING, HERE 
    divsSel[i]=ds; 
}); 
divs2=$.merge([],divsSel); 
divs2.join(); 
$(divs2).on('click',function(){...\\It might not be joey..}) 
+0

Если я правильно вас понял, вы просто хотите иметь (намного) более короткий селектор? – Tinmar

+1

Это кажется очень хрупкой конструкцией: малейшее изменение вашей структуры html и вашего JS сломается. С классом, добавленным к соответствующему предку и соответствующей цели, это можно сделать с помощью '$ ('# me'). Closeest ('. ParentClass'). Find ('joey')', который намного проще читать и гораздо более способные справиться с изменениями структуры html ... – nnnnnn

ответ

0

Вы можете просто сохранить объект JQuery в переменной. Вы не сможете вызвать $ (пример), но можете просто ссылаться на него как на пример. Рассмотрим следующий пример:

// Get the element and store in variable 
 
var $example = $('.me').parent().children().eq(1).children().eq(0); 
 
// Select the output div and write out the text of the stored jQuery obj 
 
$('.output').text("Output = " + $example.text());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="parent"> 
 
    <div class="child"></div> 
 
    <div class="child"> 
 
    <div class="anotherchild">Example text</div> 
 
    <div class="anotherchild"></div> 
 
    </div> 
 
    <div class="me"></div> 
 
</div> 
 

 
<div class="output"></div>

0

var $joey = $('#me').parents().eq(2).children().eq(1).children().eq(0).children().eq(0);

, а затем использовать как $joey.text("blabla");

0

Если я правильно вас есть ... Просто создать переменную и сохранить этот элемент (ы) в этом.

var joey = $('#me').parents().eq(2).children().eq(1).children().eq(0).children().eq(0); 

И тогда вам не нужно будет использовать escape-символ, просто «joey;»

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