Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用JSON数据类型从Ajax向新数据添加新类_Javascript_Jquery_Json_Ajax_Oracle Jet - Fatal编程技术网

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
    请求中获得的。我试图在Ajax
    success
    下添加新类,即
    $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');
          }
      });