2016-06-16 75 views
2

我的Ajax請求正在正常工作並返回所需的數據。但我想添加新的class<li>元素,我從AJAX請求獲得。我正在嘗試在Ajax success下添加新課程,例如$elm.addClass("newclass"),但我沒有看到將此新課程添加到新的li元素中。沒有錯誤。我不知道這是什麼錯誤,因爲我也沒有得到任何錯誤。使用JSON數據類型向來自Ajax的新數據添加新類

function loadSuccess(data, status, obj) 
{ 


for (i = 0; i < data.length; i++) { 
    var nodeid = data[i].attr.id; 

    if (nodeid=="BALX") { 

     $("#"+nodeid).addClass("selected"); 

    } 
} 


}; 

HTML - 從Chrome檢查 - >第一次 - 家長Node--

<ul role="tree" style="outline:none"> 
     <li role="treeitem" id="ALLACCOUNTS" <span >ALLACCOUNTS --1</span></a></li> 
</ul> 

---------------後點擊父節點 「ALLACCOUNTS」 - 它是一個Ajax調用-----

<ul role="tree" style="outline:none"><li role="treeitem" id="ALLACCOUNTS" ><a class=""><span class="oj-tree-title">ALLACCOUNTS --1</span></a><ul class="" style="overflow: hidden; display: block;"><li id="BALX" ><a ><span >BALSHEET --2</span></a></li></ul></li></ul> 
+0

你可以創建一個JSFiddle嗎?如果你在'$(「#」+ nodeid).addClass(「selected」)上設置了一個斷點,'console是否顯示$('#BALX')的匹配結果? – mwilson

+0

@mwilson:是的,它進入了IF子句,我可以在DOM中看到BALX中的nodeid。它不會爲此元素添加新類。我不確定Ajax Success是否適合這種操作。 – user88768

+0

你的nodeid是否是正確的ID?在瀏覽器控制檯上打印 –

回答

0

嘗試使用#ID的代替的.class。 然後用你的console.log($("#"+nodeid));來尋找這個元素來驗證它是否真的存在。 也許你有更多的onde #id元素,並得到一些錯誤。

將此與$("#nodeid_name").addClass('selected');強制加入到您的瀏覽器控制檯中,例如$("#BALX").addClass('selected');,看看會發生什麼。

1

下面是你要完成的一個例子。我想你可能會被選中。儘量確保jQuery是使用的開發工具真正找到元素:

https://jsfiddle.net/9j429sw4/

HTML

<div id="test1">Test 1</div> 
<div id="test2">Test 2</div> 
<div id="test3">Test 3</div> 
<div id="test4">Test 4</div> 

CSS

.selected { 
    background-color: green; 
    color: red; 
} 

的JavaScript

var ids = ["test1", "test2", "test3", "test4"]; 
$.ajax({ 
    type: 'GET', 
    url: '/echo/json', 
    success: function (response) { 
     for (var i = 0; i < ids.length; i++) { 
      if (ids[i] == "test2") $("#"+ids[i]).addClass('selected'); 
     } 
    }, 
    error: function (err) { 
     alert('error'); 
    } 
}); 
+0

: - 感謝您快速創建它。在我的情況下,最初我加載單節點說「父」,然後我們點擊父節點,然後我加載其子節點,當點擊兒童節點,然後我加載它的孩子。在這些Ajax調用期間,我試圖將新類應用於這些子節點。我可以看到這些孩子節點加載,但沒有選擇,並且當我檢查DOM時,我沒有發現這個新類添加到這些孩子節點。 – user88768

+0

如果您打開開發人員工具並設置一箇中斷點,您希望應用該類並嘗試使用控制檯查找該dom元素,它將回答您的所有問題。我保證 – mwilson

+0

新的UL子元素的子節點將被添加,只有當我點擊其父,所以斷點新節點不存在。我認爲在Ajax SUCCESS中,由於Node是通過相同的Ajax請求新創建的,新節點不適用於應用新類 – user88768