我想通过拖放更改嵌套导航,我找到一个不错的插件。现在我想将更改存储在数据库中,但不幸的是我无法读出父元素的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>
有什么想法吗?谢谢。
拉拉
答案 0 :(得分:4)
我的猜测是,如果您在this
上调用$()
,则必须使用parent()
语法包裹$('#output').html(this.id); // works fine
$('#output').html($(this).parent().parent().attr('id'));
$('#output').html($(this).closest('li').attr('id'));
:
.id
我已根据您的评论更新了代码。 jQuery对象不支持.attr('id')
,它们必须使用{{1}}。
答案 1 :(得分:1)
你可以使用:
$('#output').html($(this).parent().parent().attr('id')); // or
$('#output').html($(this).closest('li').attr('id')); // or
$('#output').html(this.parentNode.parentNode.id);