jQuery 可以在调用选择器时在函数中循环吗?
jQuery loop in function while calling selector possible?
我有一些动态构建的表单和所属 ID。 ID 看起来像 id='send_1'... id="send_2"...
一般来说,它只会发布一种形式,但我不知道会创建多少种形式,因此我需要一个通用的 jQuery-函数来完成这项工作。目前,下面的代码仅适用于一个 ID。所以我认为必须可以在选择器中循环使用 while
或 foreach
之类的东西(如果存在这样的东西?
$(document).on("submit", "#paypal", function(e){
e.preventDefault();
if ( /\,/.test( $('#send_1').val() ) ) {
$('#send_1').val($('#send_1').val().replace(/,/g, '.'));
} else {
alert('no comma');
}
return false;
});
那么,当我不知道将存在多少表单,甚至不想只更改 _x
就编写数百次相同的代码时,我该如何为每个 #send_X
执行此操作?
如果有人可以提供帮助,我将不胜感激。
如果您需要循环解决方案,请参阅下面的代码可能会有所帮助
$(document).on("submit", "#paypal", function(e){
e.preventDefault();
var i=1;
$( "li" ).each(function( index ) {
if ( /\,/.test( $('#send_'+i).val() ) ) {
$('#send_'+i).val($('#send_'+i).val().replace(/,/g, '.'));
} else {
alert('no comma');
}
i++;
});
return false;
});
或尝试更改
$('#send_1').val()
与
$( "input[id^='send']" ).val();
可能有用我不确定
参见 this link
您可以像这样使用 for loop
(为了简化,我删除了您的 if
语句):
$(document).on("submit", "#paypal", function(e) {
e.preventDefault();
var n = $("form").length; // get the number of forms
for (var i = 1; i <= n; i++) {
var form = $("#send_" + i); // gives you the form object
}
});
演示 here
希望对您有所帮助。
您可以为提交按钮添加 data-x-id 并在从以下位置获取 id 后:
$(document).on("submit", "#paypal", function(e){
e.preventDefault();
var id = $(e.target).attr('data-x-id');
// for minimal work with dom
var element = $('#send_'+id);
var value = element.val();
if ( /\,/.test( value ) ) {
element.val(value.replace(/,/g, '.'));
} else {
alert('no comma');
}
return false;
});
我有一些动态构建的表单和所属 ID。 ID 看起来像 id='send_1'... id="send_2"...
一般来说,它只会发布一种形式,但我不知道会创建多少种形式,因此我需要一个通用的 jQuery-函数来完成这项工作。目前,下面的代码仅适用于一个 ID。所以我认为必须可以在选择器中循环使用 while
或 foreach
之类的东西(如果存在这样的东西?
$(document).on("submit", "#paypal", function(e){
e.preventDefault();
if ( /\,/.test( $('#send_1').val() ) ) {
$('#send_1').val($('#send_1').val().replace(/,/g, '.'));
} else {
alert('no comma');
}
return false;
});
那么,当我不知道将存在多少表单,甚至不想只更改 _x
就编写数百次相同的代码时,我该如何为每个 #send_X
执行此操作?
如果有人可以提供帮助,我将不胜感激。
如果您需要循环解决方案,请参阅下面的代码可能会有所帮助
$(document).on("submit", "#paypal", function(e){
e.preventDefault();
var i=1;
$( "li" ).each(function( index ) {
if ( /\,/.test( $('#send_'+i).val() ) ) {
$('#send_'+i).val($('#send_'+i).val().replace(/,/g, '.'));
} else {
alert('no comma');
}
i++;
});
return false;
});
或尝试更改
$('#send_1').val()
与
$( "input[id^='send']" ).val();
可能有用我不确定
参见 this link
您可以像这样使用 for loop
(为了简化,我删除了您的 if
语句):
$(document).on("submit", "#paypal", function(e) {
e.preventDefault();
var n = $("form").length; // get the number of forms
for (var i = 1; i <= n; i++) {
var form = $("#send_" + i); // gives you the form object
}
});
演示 here
希望对您有所帮助。
您可以为提交按钮添加 data-x-id 并在从以下位置获取 id 后:
$(document).on("submit", "#paypal", function(e){
e.preventDefault();
var id = $(e.target).attr('data-x-id');
// for minimal work with dom
var element = $('#send_'+id);
var value = element.val();
if ( /\,/.test( value ) ) {
element.val(value.replace(/,/g, '.'));
} else {
alert('no comma');
}
return false;
});