javascript
  • jquery
  • binding
  • 2013-12-24 78 views 0 likes 
    0

    我有問題重新綁定動態創建的對象,從前置。我嘗試了很多東西,但我只能解除綁定。請幫忙。如何綁定()與動態創建的對象

    $(document).ready(function(){ 
    
    $(".newdir").click(function(){ 
        $(".d-exp").prepend("<div id='new' class='fm-dir'><div class='exp-x'></div><div class='fm-name'><input class='nd-text' type='text'></div></div>"); 
        $(".newfile, .paste, .copy, .cut, .rename, .delete, .fileinfo, .visit").css("opacity",".35"); 
        $(".newdir, .newfile, .paste, .copy, .cut, .rename, .delete, .fileinfo, .visit").unbind();  
    }); 
    
    $(".ribbon-menu").on("click", ".newfile", function(){ 
        $(".d-exp").prepend("<div id='new' class='fm-fn'><div class='exp-x'></div><div class='fm-name'><input class='nf-text' type='text'></div></div>"); 
        $(".newdir, .paste, .copy, .cut, .rename, .delete, .fileinfo, .visit").css("opacity",".35"); 
        $(".ribbon-menu").unbind(); 
    }); 
    
    $("div.d-exp").on("click", ".exp-x", function(){   
        $(".ribbon-menu").bind(); 
        $(".newdir, .newfile, .paste, .copy, .cut, .rename, .delete, .fileinfo, .visit").css("opacity","1");  
        $("div#new.fm-dir, div#new.fm-fn").remove(); 
    }); 
    
    }); 
    

    LIVE ANSWER http://jsfiddle.net/dC344/

    +0

    什麼版本jQuery?綁定()已棄用。你想綁定什麼? –

    回答

    0

    嘗試:

    $(document).on("click", ".newdir", function(){ 
        ... 
    }); 
    
    0

    當您嘗試綁定回來,你需要從你指定哪個事件和處理函數

    在這種情況下,只需要使用.one()而不是.on().unbind(),也可以使用.off()來解除綁定處理程序。

    $(document).ready(function() { 
    
        $(".newdir").click(function() { 
         $(".d-exp").prepend("<div id='new' class='fm-dir'><div class='exp-x'></div><div class='fm-name'><input class='nd-text' type='text'></div></div>"); 
         $(".newfile, .paste, .copy, .cut, .rename, .delete, .fileinfo, .visit").css("opacity", ".35"); 
         $(".newdir, .newfile, .paste, .copy, .cut, .rename, .delete, .fileinfo, .visit").unbind(); 
        }); 
    
        function addRibbonMenuHandler() { 
         $(".ribbon-menu").one("click", ".newfile", function() { 
          $(".d-exp").prepend("<div id='new' class='fm-fn'><div class='exp-x'></div><div class='fm-name'><input class='nf-text' type='text'></div></div>"); 
          $(".newdir, .paste, .copy, .cut, .rename, .delete, .fileinfo, .visit").css("opacity", ".35"); 
         }); 
        } 
    
        addRibbonMenuHandler(); 
    
        $("div.d-exp").on("click", ".exp-x", function() { 
         addRibbonMenuHandler(); 
         $(".newdir, .newfile, .paste, .copy, .cut, .rename, .delete, .fileinfo, .visit").css("opacity", "1"); 
         $("div#new.fm-dir, div#new.fm-fn").remove(); 
        }); 
    
    }); 
    
    +0

    到目前爲止,這是最好的評論,但它並沒有真正的工作。 Ima試圖爲視覺幫助製作一個jsfiddle。但我試圖模仿文件瀏覽器的事件行爲。當單擊新文件或新目錄時,所有其他按鈕應該解除綁定,並在任務完成時綁定回來。 –

    +0

    @TimBanon如果你可以在小提琴中共享標記,它將會很棒 –

    +0

    http://jsfiddle.net/dC344/ –

    0

    jQuery的支持live()之前將事件綁定到選擇,但Jquery 1.7後,live已被棄用。現在,你可以使用delegateon將事件綁定到選擇器(如Jquery Document

    不過,我通常創建對象後綁定功能,如作爲

    $(document).ready(function(){ 
        $("#main").click(function(){ 
         $("#main").append("<div class="new-div">Add new DIV</div>"); // Add new div in main 
         $(".new-div").on("click",doBindEvent); // Add click event into new div which function you defined 
        }); 
    }); 
    
    function doBindEvent(){ 
        // Do anything you want 
    } 
    
    0

    隨着阿倫P約翰尼的幫助下,我能夠用一些解決我的問題的邏輯來修改腳本。我是jQuery的新手,雖然它可以在研究後將它拼合在一起... XD

    $(document).ready(function() { 
    
    function addRibbonMenuHandler1() { 
        $(".ribbon-menu").on("click", ".newdir", function() { 
         $(".d-exp").prepend("<div id='new' class='fm-dir'><div class='exp-x'></div><div class='fm-name'><input class='nd-text' type='text'></div></div>"); 
         $(".newfile, .paste, .copy, .cut, .rename, .delete, .fileinfo, .visit").css("opacity", ".35"); 
         $(".ribbon-menu").unbind(); 
        }); 
    } 
    
    function addRibbonMenuHandler2() { 
        $(".ribbon-menu").on("click", ".newfile", function() { 
         $(".d-exp").prepend("<div id='new' class='fm-fn'><div class='exp-x'></div><div class='fm-name'><input class='nf-text' type='text'></div></div>"); 
         $(".newdir, .paste, .copy, .cut, .rename, .delete, .fileinfo, .visit").css("opacity", ".35"); 
         $(".ribbon-menu").unbind(); 
        }); 
    } 
    
    addRibbonMenuHandler1(); 
    addRibbonMenuHandler2(); 
    
    $("div.d-exp").on("click", ".exp-x", function() { 
        addRibbonMenuHandler1(); 
        addRibbonMenuHandler2(); 
        $(".newdir, .newfile, .paste, .copy, .cut, .rename, .delete, .fileinfo, .visit").css("opacity", "1"); 
        $("div#new.fm-dir, div#new.fm-fn").remove(); 
        $(".ribbon-menu").bind(); 
    }); 
    
    }); 
    
    +0

    LIVE DEMO http://jsfiddle.net/dC344/ –

    +0

    正如我所說不要使用解除綁定...使用.off('點擊') –

    +1

    像http://jsfiddle.net/arunpjohny/rAnq7/1/ –

    相關問題