jquery .find获取<li> </li>中的文本

时间:2010-06-01 17:38:39

标签: javascript jquery find

所以我有一系列2个嵌套的ul。当您单击li中的文本(位于标记中)时,我的页面会使其可编辑并添加保存按钮。单击保存按钮需要返回li中的新文本和li的id。 id不是问题。我正在尝试使用jQuery的.find来选择那个锚标签(这是成功的),但我似乎无法从中获取文本。

以下是第一个列表及其子列表的示例。

<ul class='lists'>
  <li class='list1'>
    <a class='a list' id='list1'> List 1 Name</a>
    <img id='savelist1id' onClick="SaveName(this.parentNode.id)" src='save.jpg'>
    <ul class='sublists'>
      <li class='sub1'>
        <a class='a sub' id='sub1id'> Sub 1 Name</a>
        <img id='savesub1id' onClick="SaveName(this.parentNode.id)" src='save.jpg'>
      </li>
      <li class='sub3'>
        <a class='a sub' id='sub2id'> Sub 2 Name</a>
        <img id='savesub2id' onClick="SaveName(this.parentNode.id)" src='save.jpg'>
      </li>
      <li class='sub2'>
        <a class='a sub' id='sub3id'> Sub 3 Name</a>
        <img id='savesub3id' onClick="SaveName(this.parentNode.id)" src='save.jpg'>
      </li>
    </ul>
  </li>
</ul>

以下是识别您点击的保存按钮的代码。

function SaveName(parentid){
  $('li').find('a').each(function(){
    if (this.id == parentid){
      alert(this.id+' '+this.text)
      }
  }
});

我想要this.text向我展示锚标签内的文字。请帮帮忙?

=============================================== ============ 编辑:

请原谅这篇文章。问题是我使用的是Jeditable并且不知道它会用一个表单代替文本,所以任何调用文本的东西都行不通。遗憾。

3 个答案:

答案 0 :(得分:6)

只需使用 $(this).text()代替 this.text

老实说,我不明白这个功能背后的逻辑,因为你的功能可以写成:

function SaveName(parentid) {
     alert($('li a#' + parentid).text();
  }
});

或者我可以建议另一种方法来做你想要的事情:

<ul class='lists'>
  <li class='list1'>
    <a class='a list' id='list1'> List 1 Name</a>
    <img id='savelist1id' onClick="SaveName(this)" src='save.jpg'>
    <ul class='list1subs'>
      <li class='sub1'>
        <a class='a sub' id='sub1id'> Sub 1 Name</a>
        <img id='savesub1id' onClick="SaveName(this)" src='save.jpg'>
      </li>
      <li class='sub3'>
        <a class='a sub' id='sub2id'> Sub 2 Name</a>
        <img id='savesub2id' onClick="SaveName(this)" src='save.jpg'>
      </li>
      <li class='sub2'>
        <a class='a sub' id='sub3id'> Sub 3 Name</a>
        <img id='savesub3id' onClick="SaveName(this)" src='save.jpg'>
      </li>
    </ul>
  </li>
</ul>

使用Javascript:

function SaveName(element) {
   alert($(element).prev("a").text());
}

答案 1 :(得分:3)

删除内联处理程序,坏业力。

$(document).ready(function(){
   $('.list1subs > li').find('img').bind('click', function(e){
      var $this = $(this);
      alert($this.siblings('a').text());
   });
});

答案 2 :(得分:0)

好的,所以当我点击该字段时,我正在使用Jeditable进行字段编辑。显然我不明白这是做什么的,因为它使用你提供的东西插入表格。这就是为什么whatever.text()变回空白的原因。它没有将表单计为文本,因此它跳过它。