为了编写更好的代码并改进我对jQuery的使用,最近我一直在阅读相关资料。其中一个新的技巧是使用jQuery事件委托。
在阅读过程中,我发现有两种“所谓”的不同方法来解决它。下面是代码片段以说明它们。
假设我有一个像这样的HTML块:
或者这样做(方法2)
在阅读过程中,我发现有两种“所谓”的不同方法来解决它。下面是代码片段以说明它们。
假设我有一个像这样的HTML块:
<html>
<head>
<title>Test Code</title>
</head>
<body>
<div id="switcher">
<button id="button1">Button 1</button>
<button id="button2">Button 1</button>
<button id="button3">Button 2</button>
<button id="button4">Button 3</button>
<button id="button5">Button 4</button>
<button id="button5">Button 5</button>
<button id="button6">Button 6</button>
<button id="button7">Button 7</button>
<button id="button8">Button 8</button>
<button id="button9">Button 9</button>
</div>
<!-- rest of code here -->
</body>
</html>
点击时,我希望能够:
- 获取被点击按钮的id(以便进一步操作)。
- 为任何一个按钮切换“active”类。
不要这样做:
$('#switcher').find('button').click(function(){
var $element = $(this);
var elementid = this.id;
$element.toggleClass('clicked');
//rest of code here
});
我可以选择这种方法(方法1)
$('#switcher').click(function(eventName){
if ($(eventName.target).is('button')) {
var $element =$(eventName.target);
var elementid = eventName.target.id;
$element.toggleClass('active');
//rest of code here
}
});
或者这样做(方法2)
$('#switcher').on('click', 'button', function(){
var $element = $(this);
var elementid = this.id;
$element.toggleClass('active');
//rest of code here
});
- 这两种技术都是委托技术吗?
- 如果是的话,哪一种方法更快(或者性能更好)并且处理委托更好呢?
- 是否存在浏览器限制?
if ($(eventName.target).closest('button').length)
。至于单击事件,唯一需要关注的是可维护性所需的时间,速度性能在这里没有意义。 - A. Wolff