2016-04-14 80 views
0

我有动态代码,它根据返回的结果创建标签。我现在的问题是,我想在标签标题上添加一个勾号,但我无法遍历到<li><a href>我需要附加勾号(附加到<a href>)。我试了很多.parent().find(),但我似乎无法得到这个正确的。我缺少的(毫无疑问,这是简单的!)JQuery将文本追加到当前标签

function getData() { 
$.getJSON("getQuestions.asp?sup="+dataVal1+"&prod="+dataVal2, function(data){}) 
    .done(function(data){    
     html = '<div class="center">Supplier: '+suppName+'</div><div class="center">' 
     html += 'Part No &amp; Description: '+partCode+' - '+partName+'</div><ul>' 
     var len = data.length; 
     for (var i = 0; i< len; i++) { 
      html += '<li><a href="#q'+data[i].id+'">'+data[i].shortdesc+'</a></li>' 
     } 
     html += '</ul>' 
     for (var i = 0; i< len; i++) { 
      html += '<div id="q'+data[i].id+'">'+data[i].question 
      html += '<fieldset><legend>Question '+parseInt(i+1)+'</legend>' 
      if (data[i].evidence == '1') { 
       html += '<iframe id="upload" frameborder="0" width="500" scrolling="no" src="upload.asp?supp='+suppCode+'&part='+partCode+'&q='+data[i].shortdesc+'"></iframe>' 
       console.log(data[i].shortdesc) 
      } else { 
       html += '<div class="yesno" data-desc="'+data[i].shortdesc+'"><span class="btn small" id="yes" >YES</span>&nbsp;<span class="btn small" id="no">NO</span></div>' 
      } 
      html +='</fieldset></div>' 
     } 

     $('#output').html(html); 
     $("#output").tabs(); 
    }); 
}; 

我已经彻底搜查,这和有可能我还没有打这可能是其他地方的精确解。

回答

0

您可以使用标签事件来做到这一点。在那里你可以找到锚标签。

function getData() { 
$.getJSON("getQuestions.asp?sup="+dataVal1+"&prod="+dataVal2, function(data){}) 
    .done(function(data){    
     html = '<div class="center">Supplier: '+suppName+'</div><div class="center">' 
     html += 'Part No &amp; Description: '+partCode+' - '+partName+'</div><ul>' 
     var len = data.length; 
     for (var i = 0; i< len; i++) { 
      html += '<li><a id="tab_"'+ i +' href="#q'+data[i].id+'">'+data[i].shortdesc+'</a></li>' 
     } 
     html += '</ul>' 
     for (var i = 0; i< len; i++) { 
      html += '<div id="q'+data[i].id+'">'+data[i].question 
      html += '<fieldset><legend>Question '+parseInt(i+1)+'</legend>' 
      if (data[i].evidence == '1') { 
       html += '<iframe id="upload" frameborder="0" width="500" scrolling="no" src="upload.asp?supp='+suppCode+'&part='+partCode+'&q='+data[i].shortdesc+'"></iframe>' 
       console.log(data[i].shortdesc) 
      } else { 
       html += '<div class="yesno" data-desc="'+data[i].shortdesc+'"><span class="btn small" id="yes" >YES</span>&nbsp;<span class="btn small" id="no">NO</span></div>' 
      } 
      html +='</fieldset></div>' 
     } 

     $('#output').html(html); 
     $("#output").tabs(); 
    }); 
}; 

    $("#output").tabs({ 
       activate : function(event, ui){ 

        var tab_index = ui.newTab.index(); 
        var anchor_tag = ui.newTab.children("a"); 
        var anchor_tag_id = anchor_tag.attr("id"); 

        localStorage.setItem("active_tab_anchor", anchor_tag_id); 
       } 
    }); 

    $('#answer_event').on('click', function(){ 
      var anchor_tag_id = localStorage.getItem("active_tab_anchor"); 
     var anchor_tag = $('#'+anchor_tag_id); 
     var href = anchor_tag.attr("href"); 
     href += href + 'tick'; 
     anchor_tag.attr('href', href); 
    }); 

它取决于你想要追加的时刻。

检查事件在这里:http://api.jqueryui.com/tabs/

+0

这是我应该扩大我原来的问题。在每个标签中都有一个“问题”,在回答时,应该用勾号标记 – Hyperjase

+0

ok,让我们仔细考虑。我想说,当你点击标签时,这意味着你可以用活动标签ID来设置一个本地存储变量,如果用户回答问题,那么你使用id查找该特定标签并尝试找到与其相关的锚标签。 – dquinonez

+0

当您为每个标签创建锚标签时,尝试向其添加标识,然后在激活事件中尝试将该标签标识ID保存在本地存储中。如果用户回答问题,那么您可以通过您保存在本地存储中的标识找到锚标签,并修改href。 – dquinonez