2016-06-08 72 views
0

我目前使用下面的代碼從數據庫中獲取值,然後將值添加到我有一個窗體。第一部分追加防火牆的名稱,並將唯一ID添加到元素的ID。jQuery - 獲取元素的ID,如果它等於值,然後添加鏈接

if (value.type == 'Firewall') { 
    $('#companyFirewall').append('<div class="detailsFirewall" id="Firewall' + value.id + '">' + value.value + '</div>'); 
} 

接下來的這個代碼將獲得「thing_id」從數據庫中,這將是涉及到「防火牆」唯一ID的外鍵,而節中,如​​果它的「ID」匹配元素,它將包裝文本與數據庫中的鏈接。

if (value.type == 'Firewall URL') { 
    if ($('.detailsFirewall').attr('id') == 'Firewall' + value.thing_id) { 
    $('#Firewall' + value.thing_id).wrap('<a target="_blank" href="' + value.value + '" />'); 
    } 
} 

現在,問題我有是它唯一的纏繞第一文本,不會做他們的休息。現在它全部在一個函數中,但我試圖單獨將它放在函數中,然後在其他函數完成後調用它。我也試着在功能上做了幾秒鐘的延遲,但這也沒有奏效。我能做些什麼來解決這個問題?

這裏是整個代碼塊:

$.get(submitLink, { business_id: business_id, sitePath: sitePath, companyFirewall: companyFirewall }) 
    .done(function(data) { 
    var results = jQuery.parseJSON(data); 
    console.log(data); 
    $(results).each(function(key, value) { 

     /* Add the data */ 
     if (value.type == 'Firewall') { 
      $('#companyFirewall').append('<div class="detailsFirewall" id="Firewall' + value.id + '">' + value.value + '</div>'); 
     } 
     if (value.type == 'Firewall URL') { 
      if ($('.detailsFirewall').attr('id') == 'Firewall' + value.thing_id) { 
       $('#Firewall' + value.thing_id).wrap('<a target="_blank" href="' + value.value + '" />'); 
      } 
     } 

     /* Logs the data in the console */ 
     console.log(key); 
     console.log(value); 
    }) 
}); 
+0

是什麼'data'樣子? – Tex

+0

我認爲你對jQuery的使用有點矯枉過正,可能實際上讓你無法找到解決方案。 考慮將'if(value.type =='防火牆URL')內的代碼更改爲如下內容: 'var el = document.getElementById('Firewall'+ value.thing_id);如果(el){ $(el).wrap ... }' – evilham

+0

'data'看起來像:'{「type」:「Firewall」,「value」:「Name」,「thing_id」:null, 「id」:「1」}' – Mason

回答

0

由於evilham他的解決方案固定我的問題。

我改變:

if (value.type == 'Firewall URL') { 
    if ($('.detailsFirewall').attr('id') == 'Firewall' + value.thing_id) { 
     $('#Firewall' + value.thing_id).wrap('<a target="_blank" href="' + value.value + '" />'); 
    } 
} 

要這樣:

var el = document.getElementById('Firewall' + value.thing_id); 
    if (el) { 
     $(el).wrap('<a target="_blank" href="' + value.value + '" />'); 
    } 
0

發生這種情況,因爲你是循環和附加每個'.detailsFirewall'類,但在第二,如果塊你不循環和檢查每一個...

示例:

變化:

if (value.type == 'Firewall URL') { 
    if ($('.detailsFirewall').attr('id') == 'Firewall' + value.thing_id) { 
     $('#Firewall' + value.thing_id).wrap('<a target="_blank" href="' + value.value + '" />'); 
    } 
} 

要:

if (value.type == 'Firewall URL') { 
    //Will check each detail appended 

    $('.detailsFirewall').each(function(){ 

     //Now you can reference this to get current element in iteration 

    if ($(this).attr('id') == 'Firewall' + value.thing_id) { 


     $('#Firewall' + value.thing_id).wrap('<a target="_blank" href="' + value.value + '" />'); 
    } 



    }) 


} 

希望這有助於

相關問題