2012-03-04 104 views
2

我正在處理一段JavaScript。我對JS完全陌生,但我有一組複選框,它是domainchkb類的一部分,名稱都是不同的值。我試圖將它們分組到一個數組中以格式化爲JSON。當執行代碼時,調試器在return this.parent().text();處停止。我在這裏做錯了什麼?任何幫助,將不勝感激。javascript jquery複選框

function format4Cart(){ 
    var domains; 

    var values = $('input[name=domainchkb]:checked').map(function(){ 
      return this.parent().text(); 
    }).get(); 

    domains = "{\"type\" : \"single\", \"data\" : ["; 

    $.each(values, function(domainIndex,selected_domain){ 
      domains += "{\"id\" : \""+selected_domain+"\", \"domain\" : \""+whois_response.data.domain+"\"},"; 
    }); 
    $(domains).text().replace(/(\s+)?.$/,""); 
    domains += "]}"; 
    domains=encodeURIComponent(domains); 
    ajaxAdd2Cart(domains); 

} 

回答

1

您試圖調用一個jQuery方法,.parent(),DOM元素上。爲了在元素上使用jQuery方法,您需要將其包裝在jQuery調用中:

var values = $('input[name=domainchkb]:checked').map(function(){ 
     return $(this).parent().text(); 
}).get(); 
+0

謝謝Gilly和其他人的幫助。 – 2012-03-04 01:14:03

1

如果您使用調試器已經只是看它看到什麼價值在那裏爲this和其他變量。可能是你不期望的。我認爲這個問題是,你正在嘗試使用this,而你應該使用功能參數:

var values = $('input[name=domainchkb]:checked').map(function(checkbox){ 
     return checkbox.parent().text(); 
}).get();  
+0

謝謝。我現在會嘗試。基本上,我正在檢查一個域名是否已註冊,如果不允許該用戶選擇一組域名,然後將其發送到腳本以生成產品並將其添加到一個magento購物車中進行檢出。然後在收到IPN後將它們鏈接到經銷商API,從經銷商處購買域名並通過電子郵件將信息發送給他們。 – 2012-03-04 00:31:44

+0

在第一次傳球之後,它仍然像以前一樣退出慣例。哼。 – 2012-03-04 00:34:50