Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Seaside&jQuery UI:可排序列表不工作?_Javascript_Jquery_Jquery Ui_Pharo_Seaside - Fatal编程技术网

Javascript Seaside&jQuery UI:可排序列表不工作?

Javascript Seaside&jQuery UI:可排序列表不工作?,javascript,jquery,jquery-ui,pharo,seaside,Javascript,Jquery,Jquery Ui,Pharo,Seaside,我是初学者。 我目前正在尝试学习Seaside,以及如何将jQuery与之集成。我一直在尝试在自己的映像中实现Seaside jQueryUI功能测试套件中提供的一些示例 由于某种原因,我无法得到一个可排序的列表。我复制并粘贴了示例中的代码,但它不起作用。我确保添加了jQuery库,并测试了它是否与可单击的动画标题一起工作。但我的可排序列表只是在没有交互的情况下呈现的 检查页面源代码确实会显示一条错误消息:TypeError:undefined不是一个函数…,但我不明白这意味着什么 任何帮助都将

我是初学者。 我目前正在尝试学习Seaside,以及如何将jQuery与之集成。我一直在尝试在自己的映像中实现Seaside jQueryUI功能测试套件中提供的一些示例

由于某种原因,我无法得到一个可排序的列表。我复制并粘贴了示例中的代码,但它不起作用。我确保添加了jQuery库,并测试了它是否与可单击的动画标题一起工作。但我的可排序列表只是在没有交互的情况下呈现的

检查页面源代码确实会显示一条错误消息:TypeError:undefined不是一个函数…,但我不明白这意味着什么

任何帮助都将不胜感激。我想掌握这个窍门,并且需要理解为什么它不起作用。请参见下面的我的代码,这完全是从他们的示例中复制的,但将列表分配给items变量的情况除外:

| items |
    items := OrderedCollection newFrom: {'peas' . 'carrots' . 'beetroot'}.
   html unorderedList
      script: (html jQuery new sortable
         onStop: (html jQuery ajax
            callback: [ :values | items := values ]
            passengers: (html jQuery this find: 'li')));
      with: [
         items do: [ :each |
            html listItem
               class: 'ui-corner-all';
               passenger: each;
               with: each ] ]
并包括浏览器中呈现的jQuery代码:

function onLoad() {
        $("#id3").sortable({              <-- TypeError occurs here
            "stop": function() {
                $.ajax({
                    "url": "/jquery",
                    "data": ["_s=To5SuUU8YuW_HSjD", "_k=MpvlOw_BWjmgF9Uy", "1", "2=" + encodeURIComponent($.map($(this).find("li").get(), function(each) {
                        return each.id
                    }).join(","))].join("&")

您是否也添加了jQueryUI库?我认为在jQuery中找不到“可排序”的。。。所以它可能没有加载。

您是否也添加了jQueryUI库?我认为在jQuery中找不到“可排序”的。。。所以它可能没有加载。

有几点需要注意

可排序的JQSortable类附带jqueryui,因此首先确保在Seaside应用程序中包括jqueryui库,例如JQUiDevelopmentLibrary

items变量是一个方法临时变量,因此它将始终按该顺序包含新项。它应该是一个实例变量,但我想您这样做是为了这个堆栈溢出示例

ajax函数中的this对象不再引用列表元素。我在标记id中添加了一个id:'list',并从传递给onStop:handler的JS对象中引用了这样的jQuery对象

有了这些改变,我可以让它工作


renderContentOn: html
    items := items
        ifNil: [ OrderedCollection newFrom: {'peas' . 'carrots' . 'beetroot'} ].
    html unorderedList
        id: 'list';
        script:
            (html jQuery new sortable
                onStop:
                    (html jQuery ajax
                        callback: [ :values | items := values ]
                        passengers: ((html jQuery id: 'list') find: 'li')));
        with: [ items
                do: [ :each | 
                    html listItem
                        class: 'ui-corner-all';
                        passenger: each;
                        with: each ] ]   

有几件事值得注意

可排序的JQSortable类附带jqueryui,因此首先确保在Seaside应用程序中包括jqueryui库,例如JQUiDevelopmentLibrary

items变量是一个方法临时变量,因此它将始终按该顺序包含新项。它应该是一个实例变量,但我想您这样做是为了这个堆栈溢出示例

ajax函数中的this对象不再引用列表元素。我在标记id中添加了一个id:'list',并从传递给onStop:handler的JS对象中引用了这样的jQuery对象

有了这些改变,我可以让它工作


renderContentOn: html
    items := items
        ifNil: [ OrderedCollection newFrom: {'peas' . 'carrots' . 'beetroot'} ].
    html unorderedList
        id: 'list';
        script:
            (html jQuery new sortable
                onStop:
                    (html jQuery ajax
                        callback: [ :values | items := values ]
                        passengers: ((html jQuery id: 'list') find: 'li')));
        with: [ items
                do: [ :each | 
                    html listItem
                        class: 'ui-corner-all';
                        passenger: each;
                        with: each ] ]   

非常感谢你。我没有意识到jQuery UI不是jQuery库的一部分。对不起,这个愚蠢的问题!现在很好用,非常感谢。我没有意识到jQuery UI不是jQuery库的一部分。对不起,这个愚蠢的问题!现在很好用,谢谢。知道列表应该是一个实例变量而不是一个临时变量是很有用的,这很有意义。就像我说的,这里还是初学者。再次感谢!我有一个后续问题。。。在其他应用程序中使用sortable函数时,在重新排列列表项后,在保存或刷新页面时,列表项是否会被清除?如何防止这种情况发生?这些项是OrderedCollection对象,因此它将取决于您如何存储/检索此类集合。在您的原始示例中,集合是在每次呈现组件时创建的,在我的示例中,集合及其顺序将在组件的生命周期内保留,但在同一组件的不同实例之间以及在不同用户会话中会有所不同。这与其说是海边的问题,不如说是一个坚持的问题。谢谢。知道列表应该是一个实例变量而不是一个临时变量是很有用的,这很有意义。就像我说的,这里还是初学者。再次感谢!我有一个后续问题。。。在其他应用程序中使用sortable函数时,在重新排列列表项后,在保存或刷新页面时,列表项是否会被清除?如何防止这种情况发生?这些项是OrderedCollection对象,因此它将取决于您如何存储/检索此类集合。在您的原始示例中,集合是在每次呈现组件时创建的,在我的示例中,集合及其顺序将在组件的生命周期内保留,但在同一组件的不同实例之间以及在不同用户会话中会有所不同。这与其说是一个海滨问题,不如说是一个持久性问题。