0

我正在构建一个 django 站点,并在我的一个页面中实现了 redips.drag 库,以允许拖动表格行。我想在我的代码中添加一个非常简单的功能 - 添加一个侦听器,因此当删除行时,它将行数据发送到服务器。说 jQuery,是这样的:

$(function() {
    $(someDomElement).on('DropEvent', function() {
           // send data to server
    };

});

但问题是 redips.drag 不是一个 jQuery 插件,而是一个 javascript 插件,所以我的知识有点(多于一点)缺乏。我可能可以找到其他一些库,但它的性能非常好,我更喜欢了解如何使用它而不是寻找不同的库。

我大概可以自己处理“将数据发送到服务器”部分,我完全无法理解的是如何“捕获” drop 事件,我听 dom 的哪个部分?我尝试将 monitorEvents 添加到不同的选择器,但完全失败了。

我还尝试操作 script.js 文件(初始化行处理的文件),但也失败了。这是我正在使用的一个(redips 包中的示例 20):

"use strict";

// define redips object container
var redips = {};

redips.init = function () {
    // reference to the REDIPS.drag library and message line
    var rd = REDIPS.drag,
        msg = document.getElementById('msg');
    // initialization
    rd.init();
    // 
    // ... more irrelevent code ...
    // 
    // row event handlers
    //
    // row clicked (display message and set hover color for "row" mode)
    rd.event.rowClicked = function () {
        msg.innerHTML = 'Clicked';
    };
    // row row_dropped
    rd.event.rowDropped = function () {
        msg.innerHTML = 'Dropped';
    };

    // and so on...
};


// function sets drop_option parameter defined at the top
redips.setRowMode = function (radioButton) {
    REDIPS.drag.rowDropMode = radioButton.value;
};


// add onload event listener
if (window.addEventListener) {
    window.addEventListener('load', redips.init, false);
}
else if (window.attachEvent) {
    window.attachEvent('onload', redips.init);
}

现在我尝试将 console.log('hello') 添加到 rd.event.rowDropped 函数(就在 msg.innerHTML 行的正上方),但这不起作用,我删除了该行并且日志中没有显示任何内容。在 init 函数之外做一个 console.log 是可行的,所以我知道脚本可以将东西传递给控制台。

请问,谁能帮帮我?我完全失去了...

4

1 回答 1

2

我知道回答你的问题可能有点晚了,但我找到了答案。您需要使用丢弃的事件和属性 rd.obj (REDIPS.drag.obj) 来获取 id 使用简单的 javascript 像 getAttribute('id')

redips.init = function () {
// reference to the REDIPS.drag library and message line
var rd = REDIPS.drag,
    msg = document.getElementById('msg');
// initialization
rd.init();

// row clicked (display message and set hover color for "row" mode)
rd.event.clicked = function () {
    msg.innerHTML = 'Clicked' + rd.obj.getAttribute('id');
};
// row row_dropped
rd.event.dropped = function () {
    msg.innerHTML = 'Dropped' + rd.obj.getAttribute('id');
};

};

于 2014-08-11T19:43:13.693 回答