2011-09-05 34 views
-1

我有一個jQuery函數的$。每一個問題,因爲我有以下功能:的jQuery設置每一個問題

function set_max(unit) {

var max = parseInt($("#"+unit+"_area").html().replace('(','').replace(')','')); 
if (max > 0) { 
    $("[name="+unit+"]").val(max); 
    $("[name=area]").html('(0)'); 
} else { 
    var val = $("#"+unit+"_area").attr('max'); 
    $("[name="+unit+"]").val(''); 
    $("#"+unit+"_area").html('('+val+')'); 
    $.each($("[name=area]"),function(){ 
     var caller = $(this).attr('id'); 
     vall = $("#"+caller+"_area").attr('max'); 
     $(caller).html('('+vall+')'); 
    }); 
} 

}

但各部分不工作,爲的.html()從連桿部分保持爲0 聯繫是這樣的:

<a id="spear_area" name="area" max="5812" href="javascript:set_max('spear');">(5812)</a>

+1

確保你傳遞一個基數爲'parseInt'。 –

+0

啊,我解決我的問題, $。每個($( 「[名稱=區域]」),函數(){VAR 呼叫者= $(本).attr( '身份證'); 瓦爾= $ (「#」+ caller).attr('max'); $(「#」+ caller).html('('+ vall +')'); }); $ .each部分有一些id發現問題。 – Eduard

+0

這是非常喜歡我曾經見過的最醜陋的javascript/jquery代碼片段..你可能想用$(selector)替換$ .each。每個,看一看[this](http://api.jquery .com/each) – Niko

回答

0

嘗試使用常規each代替。 $ .fn.each被設計用於遍歷jQuery對象,而$ .each遍歷常規對象/數組。

$("[name=area]").each(function(){ 
    var caller = $(this).attr('id'); 
    vall = $("#"+caller+"_area").attr('max'); 
    $(caller).html('('+vall+')'); 
}); 
0
  1. 的$。每()語法不正確:

    。每個(函數(指數,元素))返回:jQuery的

  2. 變量調用方未引用在jQuery對象正確的情況下,您應該在以下任一位置的ID之前添加「#」:

    var caller =「#」+ $(this).attr('id');

OR

$("#" + caller).html('('+vall+')'); 

您的代碼應該變成:

function set_max(unit) { 
    var max = parseInt($("#"+unit+"_area").html().replace('(','').replace(')','')); 

    if (max > 0) { 

     $("[name="+unit+"]").val(max); 
     $("[name=area]").html('(0)'); 

    } else {  

     var val = $("#"+unit+"_area").attr('max'); 
     $("[name="+unit+"]").val(''); 
     $("#"+unit+"_area").html('('+val+')'); 

     $("a[name=area]").each(function() { 
      var caller = "#" + $(this).attr('id'); 
      vall = $("#"+caller+"_area").attr('max'); 
      $(caller).html('('+vall+')'); 
     }); 

    } 
}