Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.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 如何在jquery的drop方法中调用函数?_Javascript_Jquery_Performance_Jquery Ui - Fatal编程技术网

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

Javascript 如何在jquery的drop方法中调用函数?,javascript,jquery,performance,jquery-ui,Javascript,Jquery,Performance,Jquery Ui,我在jquery中有一些代码,包含可拖动和可删除的元素 这是我的JSFIDLE链接- 我想优化这段代码,为 drop: function(event, ui) { var self = $(this); self.find(".placeholder").remove(); var productid = ui.draggable.attr("data-id"); if (self.find("[data-id=" + produc

我在jquery中有一些代码,包含可拖动和可删除的元素

这是我的JSFIDLE链接-

我想优化这段代码,为

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.");
        }
drop:函数(事件、用户界面){
var self=$(这是);
self.find(“.placeholder”).remove();
var productid=ui.draggable.attr(“数据id”);
if(self.find(“[data id=“+productid+”]).length)返回;
$(“
  • ”{ “text”:ui.draggable.text(), “数据id”:产品id }).附于(本); $(“#等于”).hide(); //要从其他购物图表中删除项目,请执行以下操作 var cartid=self.closest('.shoppingCart').attr('id'); $(“.shoppingCart:not(#“+cartid+”)[data id=“+productid+”])。remove(); var isAllFilled=true; $(“.shoppingCart”)。每个(函数(){ if($(this.find('ol.placeholder')).length>0) { isAllFilled=false; 返回 } }); 如果(已全部填充) { $(“#等于”).show(); $(“#equal”).html(“恭喜!您在正确的位置输入了每个块。”); }
    因此,我必须编写代码,但不能正常工作。元素可以拖动,但不能删除

    优化后,JSFIDLE链接将被删除

    那么如何解决这个问题呢。 请首先检查两个JSFIDLE链接,以便你们能够理解我面临的问题


    请提供帮助。

    在您的第二个版本中,传递
    事件
    ui
    参数

    function test(event, ui){ ...
    
    因此,您需要在函数中引用elemnt作为
    this
    ,调用
    test
    函数,如下所示

    drop: function(event, ui) {
    
        test.call(this, event, ui);
    
    }
    

    @hirenpanchal问题出在哪里?它不是
    调用.测试(这个,事件,用户界面);
    ,它的
    测试.调用(这个,事件,用户界面);
    :)