获取没有子文本的父元素文本

时间:2011-11-20 20:44:37

标签: javascript jquery traversal

我似乎正在为自己挖掘更深入的洞,但我现在决心解决这个问题。

我正在获取元素和测试以确定他们是否有孩子,在这里一些非常聪明的人的帮助下我已经走得那么远了。现在我需要让父母的文字减去儿童的文字。所以,当我获得信息元素时,文本是信息信用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 个答案:

答案 0 :(得分:3)

您是否只想要<a>元素的文本?:

if ($(v).find('li').length) {
  $(v).find('> a').text();
}

答案 1 :(得分:1)

这将仅提供信息“信息”。

$('#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)