JQuery. найти текст в <li> - PullRequest
       6

JQuery. найти текст в <li>

2 голосов
/ 01 июня 2010

Итак, у меня есть серия из 2 вложенных ul. Когда вы нажимаете на текст (который находится в теге) в li, моя страница делает это редактируемым и добавляет кнопку сохранения. нажатие на кнопку сохранения должно вернуть мне новый текст внутри этого li и идентификатор этого li. Идентификатор не является проблемой. Я пытаюсь использовать .find jQuery, чтобы выбрать этот тег привязки (что успешно), но я не могу получить текст из него.

Вот пример первого списка и его подсписков.

<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 показывал мне текст внутри тегов привязки. Помогите, пожалуйста?

=============================================== ============ Edit:

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

Ответы [ 3 ]

6 голосов
/ 01 июня 2010

просто используйте $ (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());
}
3 голосов
/ 01 июня 2010

Удалить встроенные обработчики, плохая карма.

$(document).ready(function(){
   $('.list1subs > li').find('img').bind('click', function(e){
      var $this = $(this);
      alert($this.siblings('a').text());
   });
});
0 голосов
/ 01 июня 2010

Хорошо, поэтому, когда я щелкал поле, я использовал Jeditable, чтобы редактировать поле на месте. Очевидно, я не понимал, что это делает, потому что он вставляет форму, используя то, что вы предоставляете. Вот почему what.text () возвращался пустым. Форма не считалась текстовой, поэтому пропустила ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...