2009-08-11 2 views
5

мой HTMLJQuery Sub Selector вопрос

<div id="x"> 
    <div id="x1"> 
    some text 
    <div>other text</div> 
    </div> 
    <div id="x2">just text</div> 
<div> 

мой вызов

У меня есть этот элемент, чем может быть любой селектор JQuery, 1 или несколько элементов:

var x = $("#x"); 

теперь мне нужно (это это плагин, который откроет внутренние элементы, такие как вкладки), чтобы перемещаться только через первые элементы DIV, а не его дочерние элементы. Я пытаюсь ...

$.each($($("div"), x), function() { 
    alert($(this).html()); 
}); 

показывает: 1. некоторые textother текст 2. другие текстовые 3. только текст

$.each($($("div"), x).siblings(), function() { 
    alert($(this).html()); 
}); 

показывает: 1. только текст 2. некоторые textother text

это наиболее приблизительный, но мне нужно в правильном порядке. любое предложение ? спасибо

пс. потому что это плагин, который я не могу сделать.

$("#x", "div....") 

мне нужно сделать, это

#(newselector, x) 

ответ

10

Если вы не можете использовать $("#x > div"), потому что он должен работать со всеми селекторов вы думаете, то предполагается, что вы определили, что конкретный селектор вар х:

var x = $('#x'); 

// this will select only the direct div children of x whatever the x is 
x.children('div'); 
+0

Это то, что мне нужно. Благодарю. Никогда не видел $() детей раньше. –

1

Использование:

$("#x > div") 

в качестве селектора - она ​​будет выбирать только прямые дочерние div, чей идентификатор x.

+0

Привет дружище, я сказал, что я не могу использовать $ («# х»), потому что это плагин, а $ ("# x") может быть любым типом селектора, он может быть $ ("*"). Это должно быть сделано с помощью $ (selector, jqueryobj) спасибо. –

+0

@Rodrigo: Ответ по-прежнему '>'. Вы можете использовать его другими способами, как '$ ('> div', jqueryobj)' –

1

Этот метод даст вам всю внутреннюю текст DIV в:

x.children('div').each(function() { 
    alert($(this).text()); 
}); 

Если вы не хотите все текста в сочетании с нескольких дочерних див, вы можете получить доступ только прямой текстовый узел каждый из них:

x.children('div').each(function() { 
    alert(this.childNodes[0].nodeValue); 
}); 

Примечание: в предположении x является элементом Jquery определяется var x = $('#x').

+0

+1 - Это тоже будет работать –