jQuery - 获取元素的ID,如果它等于value,则添加链接

时间:2016-06-08 18:11:50

标签: javascript php jquery html mysql

我目前正在使用以下代码从数据库中获取值,然后将值添加到我拥有的表单中。第一部分附加防火墙的名称,并将唯一ID添加到元素的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);
    })
});

2 个答案:

答案 0 :(得分: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 + '" />');
    }

答案 1 :(得分:0)

这种情况正在发生,因为您正在循环并附加每个...类,但在第二个if块中,您没有循环并检查每个类..

示例:

更改

'.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 + '" />');
     }
 }

希望这有帮助