函数声明在JQuery中需要名称错误

时间:2012-06-28 10:01:31

标签: javascript jquery

我有这个功能,但它给了我函数声明需要名称onStop函数

<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);
                },
                    nestingPxSpace : '0'
            }
    );
});
</script>

3 个答案:

答案 0 :(得分:4)

在此上下文中,this指的是onStop事件发生的DOM元素。 DOM元素不是jQuery对象。

jQuery $(this)对象没有id属性,而DOM元素则具有$('#output').html(this.id); 属性。所以,使用:

$('#output').html($(this).attr("id"));

或:

onChange

不要忘记关闭{{1}}处理函数中的括号。

答案 1 :(得分:1)

有一个括号丢失,你使用错误的语法获取id试试这个,

$('#output').html($(this).id);

应该是

$('#output').html(this.id); 

$('#output').html($(this).attr(id));

  jQuery(function($) {
    $('#Hnav, #Nnav').NestedSortable({
        accept: 'sort',
        noNestingClass: "no-children",
        helperclass: 'helper',
        autoScroll: true,
        onChange: function(serialized) {
            alert("changed");// Changed to fix
        },               
        onStop: function() {
             $('#output').html(this.id);
        },
        nestingPxSpace: '0'       
    });
});​

答案 2 :(得分:1)

代码中有两个问题,

  1. 内部功能未正确关闭。
  2. jQuery选择器不支持的元素的id属性。
  3. 修改后的代码是,

    jQuery( function($) {
        $('#Hnav, #Nnav').NestedSortable(
                {
                    accept: 'sort',
                    noNestingClass: "no-children",
                    helperclass: 'helper',
                    autoScroll: true,
                    onChange: function(serialized) {
                        //A empty function
                    },
                    onStop : function(){
                        $('#output').html($(this).attr("id"));
                    },
                    nestingPxSpace : '0'
                }
        );
    });