动态创建事件并将参数传递给函数
Dynamically create event and pass argument to function
我已经通过javascript动态创建了
function printa() { $('#output').html(yDev[0]); }
for(var n=0;n<sns.length;n++) {
$("#ulDev").append('<li><a href="#" id=btnDev'+n+'>'+sns[n]+'</a></li>');
document.getElementById('btnDev'+n).onclick=printa
}
我需要在函数中使用类似以下内容的参数
function printa(m) { $('#output').html(yDev[m]); }
for(var n=0;n<sns.length;n++) {
$("#ulDev").append('<li><a href="#" id=btnDev'+n+'>'+sns[n]+'</a></li>');
document.getElementById('btnDev'+n).onclick=printa(n)
}
我尝试了以下选项,但没有运气。
1. onclick
标签
2. $('#btnDev'+n).addEventListener('click', printa(n))
3. $("#btnDev"+n).on("click", function(evt){ evt.preventDefault(); printa(n); })
请就如何进行或任何其他方法提供建议。
首先,不要使用增量id
属性。维护起来很痛苦。相反,请使用data
属性附加每个元素唯一的信息。然后,公共类名还将允许您使用单个委托的事件处理程序。试试这个:
for (var n = 0; n < sns.length; n++) {
$("#ulDev").append('<li><a href="#" data-sns="' + n +'">' + sns[n] + '</a></li>');
}
$('#ulDev').on('click', 'a', function(e) {
e.preventDefault();
var sns = $(this).data('sns');
$('#output').html(yDev[sns])
});
var sns = [ 'foo', 'bar' ];
var yDev = {
0: 'foooooooo',
1: 'baaaaaaar'
}
for (var n = 0; n < sns.length; n++) {
$("#ulDev").append('<li><a href="#" data-sns="' + n +'">' + sns[n] + '</a></li>');
}
$('#ulDev').on('click', 'a', function(e) {
e.preventDefault();
var sns = $(this).data('sns');
$('#output').html(yDev[sns])
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="ulDev"></ul>
<div id="output"></div>
而不是使用附加到父元素的纯文本,你需要使用 jquery 创建元素,以便 jquery 知道它的存在。
请参阅此处的答案,了解如何执行此操作
相关文章:
- 函数未将值作为参数传递
- 如何在HTML元素上创建函数,而不是将元素作为参数传递
- 如何传递函数中的参数
- 将参数传递给函数
- 如何向onClick事件处理程序传递一个接受参数的函数,并且仍然将该函数绑定到组件's”;这个“;上下文
- 传递带有参数的函数
- javascript,将参数传递给函数内部的闭包中的回调
- 将字符串作为参数传递给函数onclick event jquery
- 将修改后的数组作为参数传递给函数
- 代码气味-将布尔控制参数传递给函数
- 将参数传递给函数,同时保留事件处理程序
- 如何使用按钮将参数传递给函数
- 作为参数传递时如何计算函数
- 将对象作为参数传递时的 Javascript 函数作用域
- 将回调作为参数传递给函数
- 在构造控制器、服务等时作为函数参数传递之前列出的角度 JS 变量
- 作为参数传递的函数的异步执行
- 将请求作为参数传递给函数
- 什么时候需要在javascript中的函数中将对象作为参数传递
- Javascript,对象,用参数传递函数作为参数- angular, jquery概念基本误区