簡體   English   中英

如何調用具有分配給JQuery .each()中的變量的參數的函數?

[英]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);​

HTML5數據方法

您可以將值作為數據對象分配給被調用的元素。 我還清理了一些選擇器和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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM