我需要一个输出:不是(“a”)里面的li标签

时间:2013-03-25 11:38:24

标签: jquery

<ul class="header">
    <li class="header-text">Head1</li>
    <li class="header-text"><a href="#">line11</a></li>
    <li class="header-text"><a href="#">line12</a></li>
    <li class="header-text"><a href="#">line13</a></li>
    <li class="header-text"><a href="#">line14</a></li>
    <li class="header-text"><a href="#">line15</a></li>
<ul>
<ul class="header">
    <li class="header-text">Head2</li>
    <li class="header-text"><a href="#">line21</a></li>
    <li class="header-text"><a href="#">line22</a></li>
    <li class="header-text"><a href="#">line23</a></li>
    <li class="header-text"><a href="#">line24</a></li>
    <li class="header-text"><a href="#">line25</a></li>
<ul>

单击“ul”我需要输出为“Head1”或“Head2”而没有别的

4 个答案:

答案 0 :(得分:2)

如果我没有错,你希望li没有a孩子。

因此请使用:not:has

$('li:not(:has(a))')

UL点击

$('ul').on('click',function(){
   var li_wihtout_a = $(this).find('li:not(:has(a))');
   console.log(li_wihtout_a);
});

答案 1 :(得分:1)

如果您只想获得第一个孩子的文字,这很容易。

jsFiddle

<强> JS

$('.header').click(function () {
    alert(this.children[0].innerHTML);
});

我还注意到您尚未正确关闭<ul>代码。

答案 2 :(得分:1)

使用.closest():eq()http://api.jquery.com/eq-selector/ http://api.jquery.com/closest/

很简单

LIVE DEMO

$('.header li a').click(function( e ) {

  e.preventDefault(); // prevent default browser action on anchors
  var desiredText = $(this).closest('.header').find('li:eq(0)').text();
  alert( desiredText );

} );

答案 3 :(得分:0)

如果您的标记是一致的,如上所述,请使用:first selector