Получить текст родительского элемента без детского текста - PullRequest
0 голосов
/ 21 ноября 2011

Кажется, я копаю для себя все более и более глубокую яму, но я полон решимости решить это сейчас.

Я получаю элементы и проверяю, есть ли у них дети, с помощью некоторых очень умных людей, которых я достиг. Теперь мне нужно получить текст родителей за вычетом текста детей. Поэтому ниже, когда я получаю информационный элемент, текст представляет собой информационный кредит lorem ipsum, мне просто нужна информация.

<ul id="navMenu">
  <li id="home"><a href="#home" rel="ajax">Home</a></li>
  <li id="information"><a href="#information" rel="ajax">Information</a>
    <ul>
      <li><a href="#credits" rel="ajax">Credits</a></li>
      <li><a href="#lorem_ipsum" rel="ajax">Lorem Ipsum</a></li>
    </ul>
  </li>
  <li id="faqs"><a href="#faqs" rel="ajax">FAQs</a></li>
  <li id="contact"><a href="#contact" rel="ajax">Contact</a></li>
</ul>

А вот jquery / javascript:

$('#test').load('../common.html #navMenu', function() 
{
  $.each($("#test #navMenu li"), function(i,v) 
  {
    if ($(v).find('li').length) 
    {
      var x = $(v).clone().children().remove().end().text();
      alert('This Element('+x+') has children');
    }
  });
});

Приведенный выше скрипт возвращает пустые места для информационного элемента.

Ответы [ 2 ]

3 голосов
/ 21 ноября 2011

Разве вы не хотите просто текст элемента <a>?

<code>if ($(v).find('li').length) {
  $(v).find('> a').text();
}
1 голос
/ 21 ноября 2011

Это даст только информацию «Информация».

$('#test').load('../common.html #navMenu', function() 
{
  $.each($("#test #navMenu li"), function(i,v) 
  {
    var information = $(this).find('a').first().text();

    if ($(v).find('li').length) 
    {
      var x = $(v).clone().children().remove().end().text();
      alert('This Element('+x+') has children');
    }
  });
});

Я думаю, вы могли бы использовать $(v) вместо $(this), но для удобства чтения я предпочитаю использовать $(this)

...