如果在$.each
内满足条件,我如何从整个jquery点击事件函数中存在。一种解决方案是将条件结果存储在变量中,然后在循环之后有一个if语句但是没有直接的方法吗?
$(".main").on("click",".button",function(e){
$(this).siblings('input').each(function(){
if($(this).val() == 'yourvalue') {
return false;
}
});
//......rest of the code runs if the above condition is NOT met
});
答案 0 :(得分:1)
如何从$ .each
内部突破jQuery点击事件功能
因此,您希望根据内部循环的结果从return false
处理程序中click
。您有几种选择:
使用简单的for
循环[如您的回答]
使用get
获取输入数组,然后使用Array#some
:
$(".main").on("click", ".button", function(e) {
if ($(this).siblings('input').get().some(function(input) { return input.value == 'yourvalue'; })) {
return false;
}
//...
});
使用ES2015 +箭头功能更简洁:
$(".main").on("click", ".button", function(e) {
if ($(this).siblings('input').get().some(input => input.value == 'yourvalue')) {
return false;
}
//...
});
在循环外使用标记:
$(".main").on("click", ".button", function(e) {
var flag = false;
$(this).siblings('input').each(function() {
if ($(this).val() == 'yourvalue') { // can use this.value instead of $(this).val() here
flag = true;
return false; // Breaks the `each` loop
}
});
if (flag) {
return false;
}
//...
});
答案 1 :(得分:0)
你有什么应该工作。要打破$ .each循环,只需返回false。
返回true跳到下一次迭代,相当于在正常循环中继续。
$(".main").on("click",".button",function(e){
$.each(array, function(i){
if(i === 'yourvalue') {
return false; // will exit the $.each loop
}
});
});
答案 2 :(得分:0)
使用return false
$(".main").on("click",".button",function(e){
var inputs = $(this).siblings('input')
for(var x = 0; x < inputs.length; x++){
if(inputs.eq(x).val() == 'yourvalue') {
return false;
}
}
//......rest of the code runs if the above condition is NOT met
});
答案 3 :(得分:-1)
jQuery doc:&#34;我们可以通过使回调函数返回false来打破特定迭代的$ .each()循环。返回非false与for循环中的continue语句相同;它会立即跳到下一次迭代。&#34;