当类被多个元素使用时,在不同的线程中多次执行JavaScript代码
Execute JavaScript code multiple times in different threads when the class is used by multiple elements
我有一个JavaScript代码将执行,让我们说当ID #script-name
被使用。当标识符被多个,比如两个HTML元素使用时,我想在不同的线程中多次执行它。因此,我将#script-name
重构为.script-name
类。假设我有这样的代码:
if (document.getElementsByClassName('script-name')[0]) {
var obj = $(".script-name");
obj.animate({
marginLeft: obj.css("height")
});
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="script-name" style="height: 25px; background-color: red;">height 25px</div>
<div class="script-name" style="height: 50px; background-color: blue;">height 50px</div>
该代码将使两个元素动画为marginLeft: "25px"
,其中我希望第二个元素基于其自己的marginLeft: obj.css("height")
动画。有没有一种方法来实现这一点,而不创建另一个标识符与这样的另一个代码块?
if (document.getElementById('script-name')) {
var obj = $("#script-name");
obj.animate({
marginLeft: obj.css("height")
});
}
if (document.getElementById('script-name-2')) {
var obj = $("#script-name-2");
obj.animate({
marginLeft: obj.css("height")
});
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="script-name" style="height: 25px; background-color: red;">height 25px</div>
<div id="script-name-2" style="height: 50px; background-color: blue;">height 50px</div>
您可以使用jQuery .each()
按顺序处理每个元素:
$(".script-name").each(function() {
var $this = $(this);
$this.animate({
marginLeft: $this.css("height");
});
});
注意,实际上不需要检查是否存在类为"script-name"的元素;如果没有,那么上面的代码将不做任何事情而不会导致任何类型的运行时错误。
您可以使用$.each()来做到这一点。$(selector).somefn()
通常不会抛出空指针所以你可以去掉空检查
$("#script-name-2,#script-name").each(function(){
$(this).animate({
marginLeft: $(this).css("height")
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="script-name" style="height: 25px; background-color: red;">height 25px</div>
<div id="script-name-2" style="height: 50px; background-color: blue;">height 50px</div>
相关文章:
- 在javaservlet doPost方法中启动线程时,无法返回异常消息
- javascript中的多线程
- Javascript支持多线程吗
- 如何在nodejs中创建线程池
- 起始节点.js用于并行的线程池
- Doppio:多线程是如何工作的,有什么限制吗
- 为什么Javascript SetTimeout()不是多线程的
- JavaScript的setInterval可以阻止线程执行吗?
- Do JS Reference Errors停止运行时线程执行
- 是否可以使用多线程执行Javascript函数
- jQuery-可以执行线程/异步操作吗
- 如何在nodejs的单独线程上执行dos命令
- Javascript引擎(或其他可嵌入语言),用于类似mongodb的查询执行环境和多线程
- 当类被多个元素使用时,在不同的线程中多次执行JavaScript代码
- 是Javascript中在单独线程中执行的事件循环
- 如何在Javascript中执行线程
- 在哪个线程上处理和执行AJAX请求等异步请求
- 是 promise.all 有用的,因为 javascript 是在单个线程中执行的
- dom事件——在JavaScript中有哪些方法可以重新获得对执行线程的控制?
- 在后台线程执行Javascript代码