【发布时间】:2026-01-19 18:15:01
【问题描述】:
这对我来说更像是一个知识问题,以了解有关此function 的一些说明。 第一种方法由我的同事完成,第 2 种方法由我完成。我不是each 循环的粉丝,有时我会根据需要使用它,我喜欢操纵元素并使用它(第二种方法)。
我的问题是 1st 或 2nd 方法哪个更快?
我们可以使用foreach 来实现这个功能吗?会更好吗?
$('select.test').on('change', function() {
var option_val = $(this).val(),
option_data_val = $(this).data('id');
$('select.test').each(function() {
if ($(this).data('id') != option_data_val) {
$(this).find('option[value="' + option_val + '"]').addClass('gotIt');
}
});
});
.gotIt{
display:none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="select_parent">
<select class="test" data-id="1">
<option value="1" class="hi">1</option>
<option value="2" class="hi">2</option>
<option value="3" class="hi">3</option>
<option value="4" class="hi">4</option>
<option value="5" class="hi">5</option>
<option value="6" class="hi">6</option>
</select>
</div>
<div class="select_parent">
<select class="test" data-id="2">
<option value="1" class="hi">1</option>
<option value="2" class="hi">2</option>
<option value="3" class="hi">3</option>
<option value="4" class="hi">4</option>
<option value="5" class="hi">5</option>
<option value="6" class="hi">6</option>
</select>
</div>
<div class="select_parent">
<select class="test" data-id="3">
<option value="1" class="hi">1</option>
<option value="2" class="hi">2</option>
<option value="3" class="hi">3</option>
<option value="4" class="hi">4</option>
<option value="5" class="hi">5</option>
<option value="6" class="hi">6</option>
</select>
</div>
$('select.test').on('change', function() {
var option_val = $(this).val();
$('select.test').addClass('dummy-class');
$(this).closest('.select_parent').find('select.test').removeClass('dummy-class');
$('select.test option').removeClass('gotIt');
$('select.test.dummy-class option[value='+option_val+']').addClass('gotIt');
});
.gotIt{
display:none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="select_parent">
<select class="test" data-id="1">
<option value="1" class="hi">1</option>
<option value="2" class="hi">2</option>
<option value="3" class="hi">3</option>
<option value="4" class="hi">4</option>
<option value="5" class="hi">5</option>
<option value="6" class="hi">6</option>
</select>
</div>
<div class="select_parent">
<select class="test" data-id="2">
<option value="1" class="hi">1</option>
<option value="2" class="hi">2</option>
<option value="3" class="hi">3</option>
<option value="4" class="hi">4</option>
<option value="5" class="hi">5</option>
<option value="6" class="hi">6</option>
</select>
</div>
<div class="select_parent">
<select class="test" data-id="3">
<option value="1" class="hi">1</option>
<option value="2" class="hi">2</option>
<option value="3" class="hi">3</option>
<option value="4" class="hi">4</option>
<option value="5" class="hi">5</option>
<option value="6" class="hi">6</option>
</select>
</div>
【问题讨论】:
-
“我的问题是第一种或第二种方法哪个更快?”您自己执行过基准测试吗?
-
@guest271314,不——实际上有没有办法做到这一点?
标签: javascript jquery foreach each