1

我在让一些 JS 代码工作时遇到问题。我们正在做的是通过拖放对信息表进行排序,然后更新显示移动项目和所有其他项目的排序顺序号的输入字段。

我正在做的一个例子在这里:http ://artmarketnetwork.com/sort_example.html

显然坏了,我使用的是可排序的jquery,下面的代码是我使用的,可排序的作品,更新其他输入语句的函数的执行不起作用。

$(document).ready(function(){
    $("#AttachmentWeight").live("change keyup", function() {
        $("#UserDashboardWeightForm").submit();
    });     

    $(".tablesorter tbody").sortable({ 
        opacity: 0.6, 
        cursor: 'move', 
        update: function() {
            $('table#summary tbody tr:odd').removeClass('alt-row');
            $('table#summary tbody tr:even').addClass('alt-row');
            var order = $(this).sortable("serialize"); 
            $.post("/attachments/sortable/", order);
                            updateInputs();
        }                                 
    });

});

function updateInputs() {
    $("#AttachmentWeight").each(function() {
        var aid = $(this).attr('rel');
        alert(aid);
        var weight = $(this).load("/attachments/getWeight/" + aid);
        alert(weight);
        $(this).val(weight);
    });
}

`

上面对 load("/attachments/...") 的调用正在获取项目的重量。它是一个只返回一个数字的部分,所以我们知道它的权重。

有没有其他人在这方面取得过任何成功?我有一种感觉,我错过了一些非常简单的东西。

4

1 回答 1

1

我查看了您网站上的标记。你不应该在 DOM 中有重复的 id。将 id 替换为类。

<input name="data[Attachment][0][weight]" type="text" value="1" rel="3334" style="width:30px;" class="AttachmentWeight">


function updateInputs() {
    var attachments = $(".AttachmentWeight").each(
         var $this = $(this),
             id = $this.attr("rel"),
             setWeight = function(value){
                $this.val(value);
             };
         $.get("/attachments/getWeight/" + id).done(setWeight);
    );


}

笔记:

永远不要重复ID!

.load从服务器加载数据并将返回的 html 注入匹配的 DOM 元素。简单的 $.get 将加载数据而不将其注入 DOM。

于 2012-12-05T19:24:06.353 回答