2013-07-15 80 views
0

基本上,我有一個Ajax調用,它是基於阿賈克斯請求這樣返回數據:簡單的jQuery功能不工作

var thisId = jQuery(this).data("id"); 
jQuery.ajax({ 
    type: "GET", 
    url: pluginURL + "/****/templates/files/ajax_controller.php", 
    data: "ajaxAction=AddId&id=" + thisId, 
    success: function(data) { 
     if(data === "success") {    
      var OldId = jQuery("input").find("[data-id='" + thisId + "']"); 
      if(OldId) { 
       alert("Valid OldId!"); 
       OldId.val("Added!"); 
       OldId.attr('disabled', 'disabled'); 
      } 
    } 
}); 

發生了什麼事是正在執行alert(),只是沒有val()attr它可能是一個非常簡單的東西,我忽略

+3

find()方法查找後代,而不是屬性。順便說一句,即使是一個空的jquery對象是真的,你的條件檢查將在任何情況下通過 –

回答

5

我相信你有這個錯誤。

var OldId = jQuery("input").find("[data-id='" + thisId + "']"); 

上面長相匹配[data-id='" + thisId + "']內部<input>小號元件。

嘗試替換它:

var OldId = jQuery("input[data-id='" + thisId + "']"); 

此外,由用戶指出烤,你if條件不正確。它應該是:

if(OldId.length > 0) { 
... 
} 
+0

非常感謝!這是工作! – Curtis

+1

啊..錯別字錯誤..更正。 :-) – techfoobar

0

.val.attr執行,但他們什麼都沒有做。

jQuery("input").find("[data-id='" + thisId + "']") 

這不會返回任何東西,即。 jQuery對象將是空的。

if (OldId) 

jQuery對象仍評估爲真,即使它是空的。檢查空虛的一種方法是OldId.length === 0。所以如果你想檢查一個jQuery對象是否匹配,使用jq.length > 0

+0

感謝您提供如此積極的批評,我會注意到這一點,謝謝! – Curtis