[英]how to call a function with parameters that is assigned to a variable in JQuery .each()?
如何将参数传递给分配给变量的函数。 例如:
var updateDiv = function() {
var row = this;
var values = "";
$('input[type=text],textarea,input[type=radio]:checked,input[type=checkbox]:checked', this).each(function() {
if ($(this).val()!="" && $(this).val()!=null) {
if (values!="") values = values + ","+ $(this).val();
else values += $(this).val();
}
});
if (values!="") {
if(values.substring(0,1)==",") values = values.substring(1) +"<br>";
else values = values +"<br>";
}
$('.jist', row).append(values);
}
$('tr:has(input)').each(updateDiv);
$('tr:has(textarea)').each(updateDiv);
HTML:
<tr>
<td>ai</td><td> <input type="text" name="ai" id="ai"></td>
<td><input type="checkbox" name="ana" id="ana" value="N/A"></td>
<td><div class="jist"></div></td>
</tr>
我想将参数传递给updateDiv
> updateDiv("mystring")
; 我想以这种方式在函数中使用“ mystring”-> $('.'+mystring, row).append(values);
不知道我怎么错过了这里的明显之处。
jQuery的
var updateDiv = function(divClass) {
...
$(divClass, row).append(values);
}
$('tr:has(input)').each(function(){ updateDiv('.hist'); });
$('tr:has(textarea)').each(function(){ updateDiv('.something-else'); });
。
您可以使用类名分配全局变量。 通过在每个.each()
之前定义变量, updateDiv
函数使用不同的类名。
jQuery的
var updateDiv = function() {
...
$(window.divClass, row).append(values);
}
window.divClass = '.hist';
$('tr:has(input)').each(updateDiv);
window.divClass = '.something-else';
$('tr:has(textarea)').each(updateDiv);
。
您可以将值作为数据对象分配给被调用的元素。 我还清理了一些选择器和jQuery冗余。
小提琴: http : //jsfiddle.net/iambriansreed/KWCdn/
的HTML
<table>
<tr data-update=".hist">
<td>AutoI</td>
<td> <input type="text" name="autoIH_complaint" id="autoIH_complaint"></td>
<td><input class="NA" type="checkbox" name="autoINA" id="autoINA" value="N/A"></td>
<td><div class="hist"></div></td>
</tr>
</table>
jQuery的
var updateDiv = function() {
var row = this, values = "";
$('input:text,textarea,:radio:checked,:checkbox:checked', this).each(function() {
if (this.value != "" && this.value != null) {
if (values != "") values = values + "," + this.value;
else values += this.value;
}
});
if (values != "") {
if (values.substring(0, 1) == ",") values = values.substring(1) + "<br>";
else values = values + "<br>";
}
$(row.data('update'), row).append(values);
}
$('tr:has(input)').each(updateDiv);
$('tr:has(textarea)').each(updateDiv);
我们可以将索引传递给函数,就像jQuery的.each()
方法一样。
<div class="test">1</div>
<div class="test">2</div>
这将警告“ 0”,然后警告“ 1”的索引。
var updateDiv = function( index )
{
alert( index );
}
$('.test').each(updateDiv);
如果将字符串作为参数.each(updateDiv("string1"))
传递,则它将首先评估该函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.