如何使用JQuery为许多按钮分配点击功能
How can I assign click function to many buttons using JQuery?
我有29个按钮:todayResultsbutton0 ..todayResultsbutton28,
和29div: todayresultsurl0 ..todayResultsUrls28。
我也有一个函数toggleVisibility(divName)隐藏/显示给定的div。我正在尝试使用以下代码:
for (var i=0; i < 29; ++i) {
var b = "#todayResultsbutton"+i;
var d = "todayResultsUrls"+i;
$(b).click(function(){toggleVisibility(d);});
}
我认为这会导致每个按钮点击显示/隐藏匹配的div,但实际结果是点击任何按钮(0 ..)28)显示/隐藏最后一个div - todayResultsUrls28.
谁能告诉我我错在哪里?谢谢。
使用一个类
$(".myClass").click(function() {
var d = $(this).attr("id").replace("button", "Urls");
toggleVisibility(d);
});
与其尝试使用循环,不如使用选择器来"查找"div .
说你有这样的东西:
<table>
<tr><td>
<input type="button" id="myButton" value="test" text="test" />
</td><td><div id="myDiv"></div></td></tr></table>
你可以通过:
找到myDiv$('#myButton').parent().find('#myDiv').hide();
您可以使用带有id的"startsWith"属性选择器,然后从被单击项的id构建url。
$('[id^=todayResultsbutton]').click( function() {
var url = this.id.replace(/button/,'Urls');
toggleVisibility(url);
});
使用
不是var d = "#todayResultsUrls"+i;
var d = "todayResultsUrls"+i;
你可以这样做:
$('button[id^="todayResultsbutton"]').click(function() {
var index = this.id.substring(18,this.id.length);
toggleVisibility("todayResultsUrls"+index);
});
这将查找id以todayResultsbutton
开头的所有<button>
标签。然后,它将获得所单击标签的ID,删除其todayResultsbutton
部分以获得ID,然后调用toggleVisibilty()
函数。
例子。
编辑
注:
- 使用
button
之前与选择器([id^="todayResultsbutton"]
)开始加速jQuery选择器,因为它可以使用本地getElementsByTagName
函数来获取所有按钮标签,然后只检查那些特定的ID。 -
this.id
被用来代替jQuery的$(this).attr('id')
,因为它更快(不需要包装this
或调用额外的attr()
函数),不应该导致任何跨浏览器问题。
通过使用事件目标而不是类等查找相关div来切换可见性
假设:
<div id='todayResultsUrls1'>
<button id='todayResultsbutton'></button>
</div>
使用事件目标,您可以获得按钮元素并找到您想要隐藏的div。
var parentDiv = $(e.target).parent();
toggleVisibility(parentDiv);
相关文章:
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 在循环中分配json值时,值被覆盖
- 动态分配GA增强型电子商务跟踪器
- Chrome 扩展程序.在弹出菜单中分配具有功能的按钮
- AngularJS ng-init指令被分配了功能和承诺
- 使用AngularJS从$rootScope分配功能以单击事件
- jQuery:使用 var 快捷方式分配数据以及如何链接功能以在加载和单击时运行
- 如何根据某些功能为 svg 中的每个像素分配颜色
- '如果单击按钮'在已分配给某个功能的按钮上
- 分配和功能执行
- 单击导航选项卡时分配jQuery功能
- 我们可以将自调用功能模块分配给变量吗
- 如何为提线木偶分配功能.模板
- 将一个实体的功能分配给另一个实体的功能时,范围不会更改
- JQuery:分配多个id's执行相同的功能
- 如何在纯功能风格中分配数量
- 为表列分配ID's,并添加单击功能
- 为什么可以'是否将函数分配给变量并保留其功能
- 为每个按钮分配相同的功能,并在单击任何按钮时更改功能参数
- 如何使用JQuery为许多按钮分配点击功能