0

我想通过拖放更改嵌套导航,我找到了一个不错的插件。现在我想将更改存储在数据库中,但不幸的是我无法读出父元素的 id。我需要的第二件事是列表中拖动的 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>

...

任何想法?谢谢你。

劳拉

4

2 回答 2

4

我的猜测是,如果你调用它,你必须this用语法包装:$()parent()

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

编辑:

我已根据您的评论更新了代码。jQuery 对象不支持.id,它们必须使用.attr('id').

于 2009-09-18T16:23:03.097 回答
1

你可以使用:

 $('#output').html($(this).parent().parent().attr('id')); // or
 $('#output').html($(this).closest('li').attr('id')); // or
 $('#output').html(this.parentNode.parentNode.id);
于 2009-09-18T16:24:21.067 回答