我想要检查是否有任何其他选定的值与当前选择相匹配。因此,当.payment-method更改时,我将得到值,并检查其他.payment-method的值。我想不包括引发变化的跌落。.not(this)不起作用。
$(document).on('change', '.payment-method', function() {
var thisVal = $(this).val();
console.log("this value" + thisVal);
$(".payment-method option:selected").not(this).each(function () {
console.log($(this).val());
});
});发布于 2016-11-18 11:31:39
问题在于您使用not()对option元素使用this,后者引用了select,因此它始终是假的。要解决此问题,请在包含not()元素的选择器上调用.payment-method,然后使用find()获取所选选项,如下所示:
$(document).on('change', '.payment-method', function() {
$('.payment-method').not(this).find('option:selected').each(function() {
console.log($(this).val());
});
});<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<select class="payment-method">
<option value="foo">Foo</option>
<option value="bar">Bar</option>
<option value="fizz">Fizz</option>
<option value="buzz">Buzz</option>
</select>
<select class="payment-method">
<option value="foo">Foo</option>
<option value="bar">Bar</option>
<option value="fizz">Fizz</option>
<option value="buzz">Buzz</option>
</select>
<select class="payment-method">
<option value="foo">Foo</option>
<option value="bar">Bar</option>
<option value="fizz">Fizz</option>
<option value="buzz">Buzz</option>
</select>
发布于 2016-11-18 11:32:39
要检查dupe值,可以过滤它,例如:
$(document).on('change', '.payment-method', function() {
var thisVal = $(this).val();
console.log("this value" + thisVal);
var anyDupeVal = !!$(".payment-method").not(this).filter(function() {
return this.value === thisVal
}).length;
console.log(anyDupeVal); // true or false
});如果您想要所有其他的值,如您的标题所建议的,那么您可以映射它以获得一个值数组:
var otherValues = $(".payment-method").not(this).map(function() {
return this.value
}).get();但是,这并不是很清楚你期望的结果是什么。
https://stackoverflow.com/questions/40675923
复制相似问题