2010-05-20 46 views
0

首先感謝閱讀。我有一個jQuery的問題。我正在嘗試使用AJAX獲取一些數據,並將結果放在具有動態創建的div的頁面上。這工作完美。當我嘗試選擇創建的股利和用它做什麼,會出現問題在動態元素jquery中的選擇錯誤

$('.myNewDiv').css('border', '2px solid #000080');

它給我的錯誤在jQuery庫

在Chrome中調試程序是「遺漏的類型錯誤:無法讀取屬性「片「未定義的」上線2234

而且在Firebug Firefox下‘Array.prototype是3324未定義線’

我不知道是什麼問題,所以我想是任何Informa的感激重刑

全功能代碼:

function AddNextDiv(number) { 
var url2 = '<%= ResolveUrl("~/Translate/GetLineDetails") %>'; 
     $.getJSON(url2, { textLineID: LinesIDs[number], TranslatedSubsID: '<%=  Html.Encode(Model.OutputSubs.SubsID) %>' }, function (result) { 
      if (result == "Already in Database") return false; 
      var myObject1 = JSON.parse(result); 
      $("#MainField").append("<div class=\"TextLineDiv\">This is line number " + myObject1.LineNumber + " of 423<br/>" + myObject1.TextValue + "<br/><input id=\"TranslationBox" + myObject1.LineNumber + "\" class=\"translationTextBox\" type=\"text\" size=\"20\" /><br/><div id=\"CheckBoxDiv" + myObject1.LineNumber + "\"><input name=\"" + myObject1.LineNumber + "\" class=\"addCheckBox\" onchange=\"HideDiv(this)\" type=\"checkbox\" /><br/><div class=\"NumberDiv\" title=\"" + myObject1.LineNumber + "\" onmouseover=\"CallRefresh(this)\" > This line was translated <div id=\"Translated" + myObject1.LineNumber + "\">" + myObject1.TimesTranslated + "</div> times.</div><br/><br/></div></div>"); 
      $("div#MainField div.TextLineDiv").css('border', '2px solid #000080'); 
      return true; 
     }); 
    } 

`

+0

你是說如果你刪除'.css(...)'調用不會出錯? '$(「div#MainField div.TextLineDiv」)。css('border','2px solid#000080');' – user113716 2010-05-20 18:35:13

+0

不,我仍然遇到或不帶'.css('border','2px固體#000080')' – domderen 2010-05-20 18:57:15

回答

1

您不能選擇未添加到文檔還沒有的東西。如果你可以重構你的代碼,這樣div就可以被捕獲到變量中,這很容易。否則,你需要做一些事情,比如將其添加到隱藏的元素,然後選擇它。 (yuk!)

我建議使用jQuery的DOM工具而不是將所有東西都建立爲一個大的html字符串。

+0

盡我所知,Dominik已將其添加到DOM。他只是在靠近頂部的單行示例中使用了不同的選擇器。 – user113716 2010-05-20 18:29:29

+0

是的,上面的代碼只是一個例子。真正的jquery調用位於第二個代碼塊中。 – domderen 2010-05-20 18:58:30