javascript
  • jquery
  • html
  • 2017-08-26 26 views 0 likes 
    0

    我创建一个确认对话框,用户会点击删除,它会问那么如果他们肯定与否。的JavaScript - 单击不是一个函数错误

    这是HTML

    <a href="" class="delete" >Delete</a> 
    

    这是JS处理

     (function($){ 
           var deleteBox = '<span class="deleteBox"><p>Are you sure you want to delete?</p><span class="cancel">Cancel</span><span class="confirm">Yes</span></span>'; 
           $(document).on('click', '#deleteproduct', (function(){ 
           $(this).append(deleteBox); 
           }).click(function(){ 
           if(!$(this).hasClass('selected')){ 
            $(this).addClass('selected'); 
            var owner = $(this); 
    
            $(this).find('.cancel').unbind('click').bind('click',function(){ 
            owner.removeClass('selected'); 
            return false; 
            }) 
    
            $(this).find('.confirm').unbind('click').bind('click',function(){ 
            $(this).parent().addClass('loading'); 
            var parent = $(this).parent(); 
    
            //ajax to delete 
    
            setTimeout(function(){ //On success 
             parent.addClass('deleted'); 
             setTimeout(function(){ 
             owner.fadeOut(600); 
    
             //remove item deleted 
    
             setTimeout(function(){ 
              owner.find('.deleted').removeClass('loading').removeClass('deleted'); 
              owner.removeClass('selected'); 
              owner.show(); 
             },1000) 
             },1000) 
            },1000) 
    
            return false; 
            }) 
           } 
           return false; 
           })); 
         })(jQuery); 
    

    这是它的显示

    TypeError: (intermediate value).click is not a function at this line ...... }).click(function(){ 
    

    错误我该如何解决这个问题?

    +0

    为什么使用解除绑定(“点击” )?你可以简单地使用.onclick = function(); –

    +1

    @artgb也许是因为jQuery没有'onclick'属性? –

    +0

    任何解释为什么这是downvoted? – Ola

    回答

    1

    的问题是,您尝试将click处理程序添加到的.on()结果,这显然是不支持的。如果您想将处理程序添加到deleteBox,那么你需要

    deleteBox.click(function() {/*Do something*/}); 
    

    编辑:

    这是知道如何可以应用于:

    (function($){ 
            var deleteBox = '<span class="deleteBox"><p>Are you sure you want to delete?</p><span class="cancel">Cancel</span><span class="confirm">Yes</span></span>'; 
            $(document).on('click', '#deleteproduct', (function(){ 
            $(this).append(deleteBox); 
            })); 
            $(deleteBox).click(function(){ 
            if(!$(this).hasClass('selected')){ 
             $(this).addClass('selected'); 
             var owner = $(this); 
    
             $(this).find('.cancel').unbind('click').bind('click',function(){ 
             owner.removeClass('selected'); 
             return false; 
             }) 
    
             $(this).find('.confirm').unbind('click').bind('click',function(){ 
             $(this).parent().addClass('loading'); 
             var parent = $(this).parent(); 
    
             //ajax to delete 
    
             setTimeout(function(){ //On success 
              parent.addClass('deleted'); 
              setTimeout(function(){ 
              owner.fadeOut(600); 
    
              //remove item deleted 
    
              setTimeout(function(){ 
               owner.find('.deleted').removeClass('loading').removeClass('deleted'); 
               owner.removeClass('selected'); 
               owner.show(); 
              },1000) 
              },1000) 
             },1000) 
    
             return false; 
             }) 
            } 
            return false; 
            }); 
          })(jQuery); 
    
    +0

    那么我应该删除什么来添加?我应该如何实现,在代码 – Ola

    +0

    @Ola如果您不能应用此想法为你的代码,然后我想恳请您创建的jsfiddle,我会解决这个问题你。 –

    +0

    请参阅本的jsfiddle https://jsfiddle.net/bLk3emrx/ – Ola

    0

    使用这样

    <a href="" onclick="popup()" class="delete" >Delete</a> 
    

    和你的JS代码就会像

    function popup(){ 
        //do your stuff here 
    
    } 
    
    3

    您正在呼吁(function(){}).click,但功能声明中$(document).on('click', '#deleteproduct', (function(){...})不以任何回报功能点击。相反,你可以做类似下面,单击Delete product当它增加了HTML和用了jQuery的点击事件添加到HTML。

    var deleteBox = '<span class="deleteBox"><p>Are you sure you want to delete?</p><span class="cancel">Cancel</span> <span class="confirm">Yes</span></span>'; 
     
    
     
    $('#deleteproduct').click(function() { 
     
        var $result = $('#result'); 
     
        var $popup = $('#popup'); 
     
        $result.text(""); 
     
        $popup.append(deleteBox); 
     
        $popup.find('.cancel').click(function() { 
     
        $popup.html(""); 
     
        $result.text("Cancelled"); 
     
        }); 
     
        $popup.find('.confirm').click(function() { 
     
        $popup.html(""); 
     
        $result.text("Confirmed"); 
     
        }); 
     
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
     
    <button id="deleteproduct">Delete product</button> 
     
    <div id="popup"></div> 
     
    <div id="result"></div>

    相关问题