Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как с помощью jQuery получить информацию из li (https://javascript.ru/forum/jquery/57230-kak-s-pomoshhyu-jquery-poluchit-informaciyu-iz-li.html)

nikolaichIl 25.07.2015 19:13

Как с помощью jQuery получить информацию из li
 
<div id="navid" class="navclass">
  <ul>
    <li>Folder 1</a>
      <ul>
        <li><a href="#">Sub Item 1.1</a></li>
        <li><a href="#">Sub Item 1.2</a></li>
        <li>Folder 2
          <ul>
            <li><a href="#">Sub Item 2.1</a></li>
            <li><a href="#">Sub Item 2.2</a></li>
            <li><a href="#">Sub Item 2.3</a></li>
          </ul>
        </li>
      </ul>
    </li>
  </ul>
</div>


Как получить в следующем формате, как, например, для "Sub Item 2.2":
alert(путь: 0=>2=>1; текст: Folder 1=>Folder 2=>Sub Item 2.2)

jasper-blondin 25.07.2015 19:54

Цитата:

Сообщение от nikolaichIl (Сообщение 381491)
0=>2=>2

А что это за цифры? Может, все таки, 0=>2=>1 ?

nikolaichIl 25.07.2015 20:32

Цитата:

Сообщение от jasper-blondin
А что это за цифры? Может, все таки, 0=>2=>1 ?

Да, конечно, исправил
Цитата:

Сообщение от nikolaichIl
Как получить в следующем формате, как, например, для "Sub Item 2.2":
alert(путь: 0=>2=>1; текст: Folder 1=>Folder 2=>Sub Item 2.2)

И, если это возможно, пожалуйста, без регулярных выражений.

jasper-blondin 25.07.2015 21:28

<div id="navid" class="navclass">
  <ul>
    <li>Folder 1
      <ul>
        <li><a href="#">Sub Item 1.1</a></li>
        <li><a href="#">Sub Item 1.2</a></li>
        <li>Folder 2
          <ul>
            <li><a href="#">Sub Item 2.1</a></li>
            <li id="el"><a href="#">Sub Item 2.2</a></li>
            <li><a href="#">Sub Item 2.3</a></li>
          </ul>
        </li>
      </ul>
    </li>
  </ul>
</div>


var $el = $("#el");

var positions = [$el.index()];
var values = [$.trim($el.text())];
$("#el").parents("li").each(function() {
    $this = $(this);
    positions.unshift($this.index());
    var html = $this.html();
    var position = html.indexOf("<", 1);
    values.unshift($.trim(html.slice(0, position)));
});

result = "positions: " + positions + "; values: " + values;

alert(result);

nikolaichIl 25.07.2015 21:50

Спасибо !
Но надо без
id="el"

рони 25.07.2015 23:14

nikolaichIl,
:cray:
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">

  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
$(function(){
function fn(str, el) {
    var arr = [],
        str = "li:contains(" + str + ")",
        el = $(el);
    while (el.find(str).length) {
        el = el.find(str);
        i = el.siblings().add(el).index(el);
        arr.push(i)
    }
    return arr
};
var str = "Sub Item 2.2"
alert(fn(str, "#navid").join(" => "))
});

  </script>
</head>

<body>

<div id="navid" class="navclass">
  <ul>
    <li>Folder 1
      <ul>
        <li><a href="#">Sub Item 1.1</a></li>
        <li><a href="#">Sub Item 1.2</a></li>
        <li>Folder 2
          <ul>
            <li><a href="#">Sub Item 2.1</a></li>
            <li><a href="#">Sub Item 2.2</a></li>
            <li><a href="#">Sub Item 2.3</a></li>
          </ul>
        </li>
      </ul>
    </li>
  </ul>
</div>


</body>

</html>

nikolaichIl 26.07.2015 14:09

Спасибо !
Но, если можно, дополните до
alert(путь: 0=>2=>1; текст: Folder 1=>Folder 2=>Sub Item 2.2)
Кроме того текст
Sub Item
может быть не в одном узле

<div id="navid" class="navclass">
  <ul>
    <li>Folder 1
      <ul>
        <li><a href="#">Sub Item 1.1</a></li>
        <li><a href="#">Sub Item 1.2</a></li>
        <li>Folder 2
          <ul>
            <li><a href="#">Sub Item</a></li>
            <li><a href="#">Sub Item</a></li>
            <li><a href="#">Sub Item</a></li>
          </ul>
        </li>
      </ul>
    </li>
  </ul>
</div>

рони 26.07.2015 14:52

nikolaichIl,
Цитата:

Сообщение от nikolaichIl
Но, если можно, дополните до

=> Учебник || Работа

nikolaichIl 26.07.2015 14:56

Профессору надоело...

jasper-blondin 26.07.2015 16:45

Если человек ставит конкретную задачу -- ему обязательно помогут.
Если человек сам не понимает, чего хочет -- результат соответствующий.


Часовой пояс GMT +3, время: 00:18.