Javascript 如何动态绑定事件

Javascript 如何动态绑定事件,javascript,jquery,html,Javascript,Jquery,Html,如何将事件动态绑定到已创建的n元素中?我将尝试编写这段代码,但是元素总是使用变量i(i=8)的最后一个状态,我的作用域有问题吗 console.log('add all children'); var myloc = window.location.href + "jquery"; var jquerySample = 8; for (i = 1; i <= jquerySample; i++) {

如何将事件动态绑定到已创建的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();
        }
console.log('addall children');
var myloc=window.location.href+“jquery”;
var jquerySample=8;
对于(i=1;i

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

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');
    }
console.log('addall children');
var myloc=window.location.href+“jquery”;
var jquerySample=8;
对于(i=1;i
var myloc=window.location.href+“jquery”;
var jquerySample=8;
对于(i=1;i 1.9
$(“.configureClass”)。打开(单击,函数(){
window.location=myloc+$(this.text();
});
以上代码将工作!! 不要在html中绑定任何JS事件。将其分开


快乐编码!!

你是在声明click函数后立即调用它的吗?你期望得到什么?我期望我创建的每个元素都已经与url连接,url根据for循环的索引进行了更改,这显然是错误的;我必须深入研究jquerywhy你将事件绑定到对象的去极化之外ct?是一种最佳做法?通过这种方式,它仅绑定到单亲元素,并侦听从子项中弹出的单击。这也可用于处理绑定事件时尚未创建的对象。有关“直接和委派事件”的详细信息,请访问Do not use
.live()
因为它已从jQuery中删除。不推荐的版本:1.7,删除的版本:1.9-谢谢,在我的项目中仍然使用1.7。
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');
    }
 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();
        });