编辑l
:每次单击时都无需向具有类的元素添加事件侦听器#click
演示:http://jsfiddle.net/43j8f/2/ http://jsfiddle.net/43j8f/5/
利用
$(document).ready(function () {
$('ol').hide();
$('#click').click(function () {
$(this).toggleClass('down');
$('ol').toggle();
});
$('.l').click(function () {
$('#click').html($(this).html());
});
});
如果你使用
$('.l').click(function () {
$('#click').html( $('.l').html() );
});
问题是它$('.l')
包含所有带有 class 的元素l
,并且.html()
只给你第一个的文本,而不是你点击的那个。
根据http://api.jquery.com/html/,
在一个 HTML 文档中,.html()
可以用来获取任何元素的内容。如果选择器表达式匹配多个元素,
则只有第一个匹配项会返回其 HTML 内容
相反,当您使用事件处理程序时,this
是触发处理程序的元素。
根据https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener#The_value_of_this_within_the_handler,
通常需要引用触发事件处理程序的元素,例如在对一系列相似元素使用通用处理程序时。当使用 this 的值附加一个函数时
addEventListener()
,注意这个值
this
是从调用者传递给一个函数的。