如何为多个操作执行简单的 jQuery
how to do simple jquery for multiple actions?
>我需要通过 Id 制作简单的 jquery 来对许多对象起作用。
例如,如果我有这个 HTML:
<div id="all-ids">
<div id="parent-id-1">
<div id="1">
<div></div>
<div></div>
<div></div>
</div>
</div>
<div id="parent-id-2">
<div id="2">
<div></div>
<div></div>
<div></div>
</div>
</div>
<div id="parent-id-3">
<div id="3">
<div></div>
<div></div>
<div></div>
</div>
</div>
...
</div>
现在,如果我需要为此执行单击功能,我会这样做:
$(document).on("click","#parent-id-1",function() {
$('#1').show();
});
$(document).on("click","#parent-id-2",function() {
$('#2').show();
});
$(document).on("click","#parent-id-3",function() {
$('#3').show();
});
有没有办法使上面的 Jquery 更简单,因为我有很多div ?我的意思是这样的:
$(document).on("click","#parent-id-|ID-NUMBER|",function() {
$('#|ID-NUMBER|').show();
});
所以这段代码甚至适用于 1000 个 id。
注:该 |身份证号码|既是 #parent id 中,又是 #id。
不要使用 ID,非常复杂且不可扩展。请改用类:
<div id="all-ids">
<div class="parent">
<div class="children">
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="parent">
<div class="children">
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="parent">
<div class="children">
<div></div>
<div></div>
<div></div>
</div>
</div>
...
</div>
在jQuery中:
$(document).on("click",".parent",function() {
$(this).find('.children').show();
});
你不需要更多,你可以写数百万的父母和它的孩子。
您可以使用不同的选择器。我认为您实际上想单击元素而不是正文。我想这就是你想要的:
$('[id^=parent-id]').each(function(i, e){
var el = $(e);
el.click(function(){
el.children(':first').show();
});
});
请注意,HTML 属性或 JavaScript 变量不能以数字(包括 id)开头。
您可以使用属性选择器来选择具有以"parent-id-"开头的 id 值的元素。
$(document).on("click", "[id^=parent-id-]", function(e) {
alert($(this).attr("id").replace("parent-id-", ""));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="all-ids">
<div id="parent-id-1">
<div id="1">
<div>Lorem</div>
<div></div>
<div></div>
</div>
</div>
<div id="parent-id-2">
<div id="2">
<div>Ipsum</div>
<div></div>
<div></div>
</div>
</div>
<div id="parent-id-3">
<div id="3">
<div>Dolor</div>
<div></div>
<div></div>
</div>
</div>
...
</div>
我认为这应该有效:
[1, 2, 3].forEach(function(index) {
$(document).on("click","#parent-id-" + index,function() {
$('#' + index).show();
});
});
或者,如果您不想同时命名两个div,则可以使用 >
指向父div
的直接子级,或者编写另一个选择器。要实现这一目标,您可以做到:
<div id="all-ids">
<div class="parent">
<div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="parent">
<div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="parent">
<div>
<div></div>
<div></div>
<div></div>
</div>
</div>
...
</div>
在 JavaScript 中:
$(document).on("click",".parent",function() {
$(this).find('>div').show();
});
相关文章:
- Javascript:正在使用Jquery's bind()比简单地执行onclick='bla()
- 在JS上使用JQuery执行简单任务的任何原因
- 如何执行简单的基于 DOM 的 XSS 攻击
- 如何为多个操作执行简单的 jQuery
- 对字符串执行简单的数字测试
- jQuery 更简单的方法来执行真正的向上/向下滑动
- 是否可以从文档中的输入字段执行简单的 javascript 语句
- Selenium WD NullPointerException 同时执行简单的 JS 代码
- 执行简单的JavaScript作为Chrome插件
- 简单的jQuery脚本无法执行任何操作
- 我得到了一个“;意外的令牌“;尝试对简单对象执行JSON.parse时出错
- redux简单路由器-根据URL执行操作
- 使用AJAX点击执行简单的mysqli查询
- 使用Node.js执行简单Unix终端命令
- 在Javascript中执行简单闭包时出现运行时错误
- 在Python中执行简单Javascript Regex
- 不能让Knockout执行简单的'options'绑定
- 尝试构建一个javascript库,但未能执行简单的初始化操作
- 没有执行简单的Javascript测试
- Chrome扩展-从弹出窗口执行简单的JavaScript