您可以在没有 jquery 的情况下以这种方式定义事件侦听器函数:
var firstTd = document.getElementById('firstTd');
// or
var firstTd = document.getElementsByClassName('firstTd')[0];
var eventHandler = function(td){
console.log('firstTd: ',td);
}.bind(null,firstTd); // firstTd is the value for the first param
document.getElementsByClassName('deleteArticle')[0].addEventListener('click',eventHandler);
代码所做的是使用 bind 创建一个函数。您可以为创建的函数的参数定义值:
var createdFunction = function(){}.bind(/* param for this */, /* first param for the created function */, /* second...*/)
当 createdFunction 被调用时,它可以访问您使用 bind 定义的某个值(创建函数的第一个参数,第二个...)。
当您想要获取整个表以便可以迭代每个 td 元素时,您可以这样做:
var firstTd = document.getElementById('firstTd');
var eventHandler = function(td){
console.log('table: ',this);
console.log('table-children: ',this.children);
var tableChildren = Array.prototype.slice.call(this.children); // casts htmlCollection to Array
// now you can iterate over each td-element and use the Array-Methods (slice, split, reverse..)
}.bind(document.getElementsByClassName('mytable')[0]); // sets html-table-element as
document.getElementsByClassName('mytable')[0].addEventListener('click',eventHandler);
我希望这可以帮助你。