-1

这是我的问题,我在jsfiddle中放了一段代码,效果很好。我在我的网站上放置了相同的代码,显然在标题中添加了 jquery 和 jquery UI(直接链接到 jquery 站点,而不是在本地托管这些文件)并且代码不起作用。

我试图在这个项目中获得“可排序”的效果。它也不仅仅是这段代码。它是每一个使用 jquery 的具有任何可拖动、可移动等的代码。我错过了一些东西,甚至想不出它是什么。

我拥有数据中心的服务器,它们正在运行 cPanel,所以如果我需要进行更改,我可以完全访问服务器本身。

当我在 jsfiddle 上测试代码时,当我单击并拖动

  • 标签,它不会突出显示文本,它移动<li>标签允许我重新排序列表。在我的网站上,它开始突出显示文本,实际上并没有移动文件。两个地方的所有 HTML 都完全相同。

    有任何想法吗?

    JSFiddle:http: //jsfiddle.net/yGrUp/

    代码:(一些代码仍然存在与我的 php 代码交互;但是,删除了此示例的所有 php 代码以进行测试)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Untitled Document</title>
    <script src="http://code.jquery.com/jquery-1.10.1.js"></script>
    <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
    <script type="text/javascript">
    <script type="text/javascript">
    /* when the DOM is ready */
    jQuery(document).ready(function() {
        /* grab important elements */
        var sortInput = jQuery('#sort_order');
        var submit = jQuery('#autoSubmit');
        var messageBox = jQuery('#message-box');
        var list = jQuery('#sortable-list');
        /* create requesting function to avoid duplicate code */
        var request = function() {
            jQuery.ajax({
                beforeSend: function() {
                    messageBox.text('Updating the sort order in the database.');
                },
                complete: function() {
                    messageBox.text('Database has been updated.');
                },
                data: 'sort_order=' + sortInput[0].value + '&ajax=' + submit[0].checked + '&do_submit=1&byajax=1', //need [0]?
                type: 'post',
                url: '<?php echo $_SERVER["REQUEST_URI"]; ?>'
            });
        };
        /* worker function */
        var fnSubmit = function(save) {
            var sortOrder = [];
            list.children('li').each(function(){
                sortOrder.push(jQuery(this).data('id'));
            });
            sortInput.val(sortOrder.join(','));
            console.log(sortInput.val());
            if(save) {
                request();
            }
        };
        /* store values */
        list.children('li').each(function() {
            var li = jQuery(this);
            li.data('id',li.attr('title')).attr('title','');
        });
        /* sortables */
        list.sortable({
            opacity: 0.7,
            update: function() {
                fnSubmit(submit[0].checked);
            }
        });
        list.disableSelection();
        /* ajax form submission */
        jQuery('#dd-form').bind('submit',function(e) {
            if(e) e.preventDefault();
            fnSubmit(true);
        });
    });
    </script>
    <link rel="stylesheet" type="text/css" href="css/style.css"/>
    </head>
    
    <body>
    
    <ul id="sortable-list">
    <li title="1">Item 1</li>
    <li title="2">Item 2</li>
    <li title="3">Item 3</li>
    <li title="4">Item 4</li>
    </ul>
    

  • 4

    1 回答 1

    1

    您有两个打开的脚本标签:

    <script type="text/javascript">
    <script type="text/javascript">
    /* when the DOM is ready */
    jQuery(document).ready(function() {
    

    第二个被视为 JavaScript 代码,无法解析。您应该在开发工具控制台中遇到错误;例如,Chrome 说Uncaught SyntaxError: Unexpected token <

    要修复它,只需删除其中一个。(它适用于 jsFiddle,因为您没有粘贴脚本标签。)

    于 2013-10-07T06:49:36.857 回答