如何动态绑定事件

时间:2014-08-26 12:31:28

标签: javascript jquery html5

如何将动态事件绑定到创建的n元素中?我将尝试这个代码,但元素总是使用变量i的最后一个状态(i = 8),我的范围有问题吗?

        console.log('add all children');

        var myloc = window.location.href + "jquery";
        var jquerySample = 8;

        for (i = 1; i <= jquerySample; i++) {

            var element=jQuery('<div/>', {
                id: 'subitemElement' + i,
                href: myloc + "/test_jQ_" + i,
                class: 'subitem',
                rel: 'external',
                text: "test_jQ_" + i,
                click: function(num) {
                    console.log("subitem jquery click");

                    window.location = myloc + "/test_jQ_" + num;
                }(i)
            });
            element.appendTo('#itemJQUERY');

            event.preventDefault();
        }

3 个答案:

答案 0 :(得分:1)

我认为使用以下代码会更成功:

console.log('add all children');

    var myloc = window.location.href + "jquery";
    var jquerySample = 8;

    for (i = 1; i <= jquerySample; i++) {
        var element = $(document.createElement('div'))
            .attr(
                {
                    id: 'subitemElement' + i,
                    rel: 'external'
                })
            .data(
                {
                    url: myloc + "/test_jQ_" + i,   
                })
            .text('test_jQ_' + i)
            .addClass('subitem')
            .click(function(e)
                   {
                       window.location = $(this).data('url');
                   });

        element.appendTo('#itemJQUERY');
    }

div没有名为href的属性。将其另存为数据。

请在此处查看jsfiddle:A working fiddle

答案 1 :(得分:0)

jQuery('#itemJQUERY').on('click','.subitem',function(){
    window.location = $(this).data('url');
});

http://jsfiddle.net/5Lvyoh7u/1/

答案 2 :(得分:0)

 var myloc = window.location.href + "jquery";
    var jquerySample = 8;

    for (i = 1; i <= jquerySample; i++) {

        var element=jQuery('<div/>', {
            id: 'subitemElement' + i,
            class: 'configureClass'
            href: myloc + "/test_jQ_" + i,
            class: 'subitem',
            rel: 'external',
            text: "test_jQ_" + i
        });
        element.appendTo('#itemJQUERY');

        event.preventDefault();
    }
    //if Jquery - 1.7
    $(".configureClass").live(click,function(){
        window.location = myloc + $(this).text();
    });
    //if Jquery - > 1.9
$(".configureClass").on(click,function(){
            window.location = myloc + $(this).text();
        });

以上代码将有效!! 不要绑定html中的任何JS事件。把它分开。

快乐的编码!!