如何在jquery的drop方法中调用函数?

时间:2013-12-05 07:07:38

标签: javascript jquery performance jquery-ui

我在jquery中有一些带有可拖动和可拖动元素的代码。

以下是jsfiddle的链接 - http://jsfiddle.net/hirenwebdp/Mf6zJ/333/

我希望通过为

创建一个函数来优化此代码
drop: function(event, ui) {
        var self = $(this);
        self.find(".placeholder").remove();
        var productid = ui.draggable.attr("data-id");
        if (self.find("[data-id=" + productid + "]").length) return;
        $("<li></li>", {
            "text": ui.draggable.text(),
            "data-id": productid
        }).appendTo(this);
             $("#equal").hide();

        // To remove item from other shopping chart do this
        var cartid = self.closest('.shoppingCart').attr('id');
        $(".shoppingCart:not(#"+cartid+") [data-id="+productid+"]").remove();
           var isAllFilled = true;
        $(".shoppingCart").each(function(){
            if($(this).find('ol .placeholder').length > 0)
            {
                isAllFilled = false;
                return
            }
                   });
        if(isAllFilled)
        {
            $("#equal").show();
             $("#equal").html("Congratulation! You have entered each block in correct place.");
        }

所以我制作了代码但没有正常工作。元素被拖动但不可丢弃。

优化后,jsfiddle链接为http://jsfiddle.net/Mf6zJ/486/

那么如何解决这个问题。 请先检查两个jsfiddle链接,这样你们就可以了解我面临的问题。

请帮助。

1 个答案:

答案 0 :(得分:2)

在您的第二个版本中传递eventui参数

function test(event, ui){ ...

因此你需要在函数内部引用elemnt作为this调用test函数,如下所示

drop: function(event, ui) {

    test.call(this, event, ui);

}

<强> DEMO