Javascript 如何使用jquery处理具有数组的新字段
例如,我有3个字段,用户可以输入数字a、b、c 所以字段C将检查字段C中输入的数字是否b 在表单中,我有一个按钮,可以创建一个附加行 另一个a,b,c;所以我不知道如何像以前一样控制同样的操作Javascript 如何使用jquery处理具有数组的新字段,javascript,php,jquery,performance,Javascript,Php,Jquery,Performance,例如,我有3个字段,用户可以输入数字a、b、c 所以字段C将检查字段C中输入的数字是否b 在表单中,我有一个按钮,可以创建一个附加行 另一个a,b,c;所以我不知道如何像以前一样控制同样的操作 最好的方法是使用最接近的函数 $(".c").change(function(){ if($(this).val() > $(this).closest('.a').val() || $(this).closest('.c').val() < $('.b').val())
最好的方法是使用最接近的函数
$(".c").change(function(){
if($(this).val() > $(this).closest('.a').val() || $(this).closest('.c').val() < $('.b').val())
{
$(this).closest('.c').css( "backgroundColor", "#ff0000" );
}else{
$(this).closest('.c').css( "backgroundColor", "#00FF00" );
}
});
不会冒泡,这意味着您需要为表单中的每个输入使用事件侦听器
当将选择器与第二个参数一起使用时,jQuery将自动处理这个问题,这相当于旧的弃用参数。根据官方文件中的描述,它将:
根据一组特定的根元素,将处理程序附加到与选择器匹配的所有元素的一个或多个事件上(现在或将来)
所以,如果你这样做:
$('.details').on('change', 'input', (event) => { ... });
这将侦听与.details选择器匹配的所有元素中的任何元素上的更改事件,无论它们在调用该方法时是否已经存在,或者它们是否是在以后创建的,因为这是您的情况
现在,一旦发生更改事件,您应该使用和方法来选择触发事件的所在行,从那里您可以根据它们的位置或选择器、它们的值获得所有3个输入,并执行逻辑来更新该特定行
无论如何,如果您使用输入而不是侦听更改事件,那么您可以从中受益。这意味着在这种情况下,将为整个系统创建一个事件侦听器,而不是每个系统创建一个。使用event.target,您将能够区分哪一个触发了事件,您需要使用哪一个来获取同一行中的其他输入
总的来说,它看起来是这样的:
$('.details').on('change', 'input', (event) => { ... });
//最好保留引用,而不是每次都获取引用:
const details=$'details';
详细信息。关于“输入”,“输入”,事件=>{
const children=$event.target.parents.eq1.children;
const avgInput=children.eq3.find'input';
const max=parseIntchildren.eq1.find'input'.val;
const min=parseIntchildren.eq2.find'input'.val;
const avg=parseIntavgInput.val;
如果isNaNmax | | isNaNmin | | isNaNavg{
//如果其中任何一个是空的,不要做任何事情。
回来
}
css'backgroundColor',avg>max | | avg.delegate在几年前的jQuery 1.7中被.on取代,在3.0中被弃用。您不应该将其用于新代码。谢谢Rahul的回答,但是比较和新词都不起作用。。。我试图找到最接近的值,但为空。。。你能帮我更多吗?