javascript
  • jquery
  • html
  • 2016-09-02 56 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"); 
        }); 
    }); 
    
    相关问题