javascript
  • jquery
  • html
  • 2016-09-02 98 views 3 likes 
    3

    我正在尋找一種可以在創建新元素時創建jquery腳本的方式。當創建一個新元素時創建jQuery

    這裏是我做了什麼

    <div id = "content"> 
    content 
    </div> 
    
    <script> 
    $('#content').click(function(event) { 
        $('#content').append('<div id='+ Math.floor((Math.random() * 100) + 1) +'> 123 </div>'); 
    }); 
    
    // dynamically create click function? 
    $('#randomNumber').click(function(event) { 
        console.log("Random id"); 
    }); 
    </script> 
    

    回答

    2

    你並不需要,因爲你可以使用.on()它適用於當前和未來的元素,像這樣:

    $("#content").on("click", "div", function() { 
        console.log(this.id); 
    }); 
    

    這實質上創建了一個click處理程序的所有div存在或不存在#content和處理程序記錄idthis

    $('#content').click(function(event) { 
        $('#content').append('<div id='+ Math.floor((Math.random() * 100) + 1) +'> 123 </div>'); 
    }); 
    

    你的其他處理器創建這樣div秒。只要確保你不重複id s,因爲這將導致invalid HTML,這涉及到SEO分數時會受到懲罰。

    +0

    這太棒了!我正在尋找這種方式! –

    +0

    @CodaChang,我很高興我能幫上忙。 –

    0

    您需要創建生成一個隨機數那樣的功能:

    function getRandomInt(min, max) { 
        return Math.floor(Math.random() * (max - min + 1)) + min; 
    } 
    

    ,到時您將追加一個新的div用隨機ID。

    編輯:這裏是一個jsbin https://jsbin.com/cimusoxale/edit?html,js,console,output

    1

    嘗試:

    $('#content').click(function(event) { 
        var randDiv = $('<div id='+ Math.floor((Math.random() * 100) + 1) +'> 123 </div>').appendTo('#content'); 
        // dynamically create click function? 
        randDiv.click(function(event) { 
        console.log("Random id"); 
        }); 
    }); 
    
    相關問題