【发布时间】:2016-06-03 00:29:32
【问题描述】:
考虑以下 HTML 块:
<button id="follow-user1" class="btnFollow">Follow User1</button>
<button id="follow-user2" class="btnFollow">Follow User2</button>
<button id="follow-user3" class="btnFollow">Follow User3</button>
<button id="follow-user4" class="btnFollow">Follow User4</button>
有几种方法可以将事件处理程序绑定到每个按钮:
通过onclick="code()"(不良做法):
<button id="follow-user1" class="btnFollow" onclick="alert(1)">Follow User1</button>
<button id="follow-user1" class="btnFollow" onclick="alert(1)">Follow User1</button>
<button id="follow-user2" class="btnFollow" onclick="alert(1)">Follow User2</button>
<button id="follow-user3" class="btnFollow" onclick="alert(1)">Follow User3</button>
<button id="follow-user4" class="btnFollow" onclick="alert(1)">Follow User4</button>
通过元素的id:
$("#follow-user1").click(function(){
alert(1);
});
$("#follow-user1").click(function(){
alert(1);
});
$("#follow-user2").click(function(){
alert(2);
});
$("#follow-user3").click(function(){
alert(3);
});
$("#follow-user4").click(function(){
alert(4);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="follow-user1" class="btnFollow">Follow User1</button>
<button id="follow-user2" class="btnFollow">Follow User2</button>
<button id="follow-user3" class="btnFollow">Follow User3</button>
<button id="follow-user4" class="btnFollow">Follow User4</button>
通过元素的class,使用:eq()选择器:
$(".btnFollow:eq(0)").click(function(){
alert(1);
});
$(".btnFollow:eq(0)").click(function() {
alert(1);
});
$(".btnFollow:eq(1)").click(function() {
alert(2);
});
$(".btnFollow:eq(2)").click(function() {
alert(3);
});
$(".btnFollow:eq(3)").click(function() {
alert(4);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="follow-user1" class="btnFollow">Follow User1</button>
<button id="follow-user2" class="btnFollow">Follow User2</button>
<button id="follow-user3" class="btnFollow">Follow User3</button>
<button id="follow-user4" class="btnFollow">Follow User4</button>
以下哪一项是最佳做法?有没有更好/更简单的方法来实现这一点?
【问题讨论】:
-
将事件附加到所有按钮?这个
$(".btnFollow").click(function() { alert(1); });呢? -
假设事件处理程序几乎相同,那么以上都不是理想的。使用单个通用事件处理程序,该处理程序仅检查单击了哪个按钮来修改其行为。
标签: javascript jquery html jquery-selectors jquery-events