Javascript 如何动态绑定事件
如何将事件动态绑定到已创建的n元素中?我将尝试编写这段代码,但是元素总是使用变量i(i=8)的最后一个状态,我的作用域有问题吗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++) {
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;ivar 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();
});