我目前正在使用以下代码从数据库中获取值,然后将值添加到我拥有的表单中。第一部分附加防火墙的名称,并将唯一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);
})
});
答案 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 + '" />');
}
}
希望这有帮助