如何将动态事件绑定到创建的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();
}
答案 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');
});
答案 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事件。把它分开。
快乐的编码!!