Как получить идентификатор родителя и позицию элемента li - PullRequest
0 голосов
/ 18 сентября 2009

Я хочу изменить вложенную навигацию путем перетаскивания, и я нашел хороший плагин. Теперь я хочу сохранить изменения в базе данных, но, к сожалению, я не могу прочитать идентификатор родительского элемента. Второе, что мне нужно, это новая позиция перетаскиваемого элемента li в списке

<script type="text/javascript" src="includes/jquery/jquery.js"></script>
<script type="text/javascript" src="includes/jquery/interface.js"></script>
<script type="text/javascript" src="includes/jquery/inestedsortable-1.0.pack.js"></script>
<script type="text/javascript">
    jQuery( function($) {
        $('#Hnav, #Nnav').NestedSortable(
            {
                accept: 'sort',
                noNestingClass: "no-children",
                helperclass: 'helper',
                autoScroll: true,
                onChange: function(serialized) {
            onStop : function(){
              $('#output').html($(this).id); // works fine
              $('#output').html($(this).parent().parent().att('id')); // fail
                  $('#output').html(this.closest('li').att('id')); // fail
            },
                nestingPxSpace : '0'
            }
        );
    });
</script>

HTML

<div id="sitemap">
<ul id="Hnav">
  <li id="n1"><a href="contentsite.php?cont=1">Home</a></li>
  <li id="n2" class="sort"><a href="contentsite.php?cont=2">Choir</a>
    <ul class="level2">
      <li id="n4" class="sort"><a href="contentsite.php?cont=3">lkff</a></li>
      <li id="n6" class="sort"><a href="contentsite.php?cont=5">changethis</a></li>
      <li id="n5" class="sort"><a href="contentsite.php?cont=4">History</a></li>
    </ul>
  </li>

...

Есть идеи? Спасибо.

Lara

Ответы [ 2 ]

4 голосов
/ 18 сентября 2009

Полагаю, вам нужно обернуть this синтаксисом $(), если вы вызываете parent():

$('#output').html(this.id); // works fine
$('#output').html($(this).parent().parent().attr('id'));
$('#output').html($(this).closest('li').attr('id'));

Edit:

Я обновил код в ответ на ваш комментарий. Объекты jQuery не поддерживают .id, они должны использовать .attr('id').

1 голос
/ 18 сентября 2009

Вы можете использовать либо:

 $('#output').html($(this).parent().parent().attr('id')); // or
 $('#output').html($(this).closest('li').attr('id')); // or
 $('#output').html(this.parentNode.parentNode.id);
...