Javascript 使用JSON数据类型从Ajax向新数据添加新类
我的Javascript 使用JSON数据类型从Ajax向新数据添加新类,javascript,jquery,json,ajax,oracle-jet,Javascript,Jquery,Json,Ajax,Oracle Jet,我的Ajax请求工作正常,返回了所需的数据。但是我想将新的类添加到元素中,这是我从AJAX请求中获得的。我试图在Ajaxsuccess下添加新类,即$elm.addClass(“newclass”),但我没有看到这个新类被添加到新的li元素中。没有错误。我不确定这有什么问题,因为我也没有得到任何错误 function loadSuccess(data, status, obj) { for (i = 0; i < data.length; i++) { var nodeid
Ajax
请求工作正常,返回了所需的数据。但是我想将新的类
添加到
元素中,这是我从AJAX
请求中获得的。我试图在Ajaxsuccess
下添加新类,即$elm.addClass(“newclass”)
,但我没有看到这个新类被添加到新的li
元素中。没有错误。我不确定这有什么问题,因为我也没有得到任何错误
function loadSuccess(data, status, obj)
{
for (i = 0; i < data.length; i++) {
var nodeid = data[i].attr.id;
if (nodeid=="BALX") {
$("#"+nodeid).addClass("selected");
}
}
};
函数加载成功(数据、状态、obj)
{
对于(i=0;i
HTML--来自Chrome Inspector-->第一次--父节点--
<ul role="tree" style="outline:none">
<li role="treeitem" id="ALLACCOUNTS" <span >ALLACCOUNTS --1</span></a></li>
</ul>
<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>
尝试使用.class而不是#id。
并使用
console.log($(“#”+nodeid))查找此元素
以验证是否确实存在此问题。
也许您有不止一个onde#id元素,并得到一些错误
使用$(“#nodeid_name”).addClass('selected')强制执行此操作代码>直接进入浏览器控制台,如$(“#BALX”).addClass('selected')编码>并查看发生了什么。下面是一个您试图实现的示例。我想你可能是被选中了。尝试确保jquery使用开发人员工具实际查找元素:
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>
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');
}
});
varids=[“test1”、“test2”、“test3”、“test4”];
$.ajax({
键入:“GET”,
url:“/echo/json”,
成功:功能(响应){
对于(变量i=0;i
您能创建一个JSFIDLE吗?如果在$(“#”+nodeid).addClass(“选定”)上设置断点
控制台是否显示$('#BALX')的匹配结果?@mwilson:-是的,它将进入IF子句,我可以在DOM中看到带有BALX的nodeid。这是因为它没有向该元素添加新类。我不确定Ajax的成功是否适合这种操作。您的nodeid是正确的id吗?在浏览器控制台上打印我在下面用一个伪JSFIDLE ajax调用发布了一个答案。尝试并确保您的与fine匹配(url除外)。我仍然愿意,但这是你的选择。如果要从控制台查找添加的类,请向我们显示BALX元素的HTML。尝试关闭控制台并再次检查。或者为所选类添加一些红色边框,然后重试。Addclass必须正常工作,但有时它可能在控制台中不可见。:-感谢您快速创建它。在我的例子中,最初我用单个节点加载,比如说“父节点”,然后我们单击父节点,然后我加载它的子节点,当单击子节点时,我加载它的子节点。在这些ajax调用期间,我试图将新类应用于这些子节点。我可以看到这些子节点正在加载,但没有选择,而且当我在那里检查DOM时,我没有找到添加到这些子节点的新类。如果打开开发人员工具并设置一个断点,您希望应用该类,并尝试使用控制台查找DOM元素,它将回答您的所有问题。我保证只有当我点击其父节点时,子节点的新UL元素才会被添加,所以对于断点,新节点不在那里。我认为在Ajax成功中,新节点不可用于应用新类,因为节点是通过相同的Ajax请求新创建的
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');
}
});