在开始阅读Sitepoint的“Ninja新手”之后,我刚刚开始使用jQuery,但是,一如既往,我想知道是否有更好的方法来编写我想出的代码。事实证明,答案几乎总是强调“是的”。
所有这些“如果”的陈述似乎都很荒谬。我怎么能做得更好?我应该看看哪些功能来清理它。谢谢你的帮助。
$('#user').change(function(){
var user_id = $('#user').val();
$.ajax({
type: 'POST',
url: '../admin/billing/' + user_id,
dataType: 'json',
success: function(billing){
//alert(billing.id);
var name = '<a href="../user/view/' + user_id +'">' + billing.fname + ' ' + billing.lname + '</a><br />';
if(billing.company_name != ''){
var company_name = billing.company_name + '<br />';
}else{
var company_name = '';
};
if(billing.address_one != ''){
var address_one = billing.address_one + '<br />';
}else{
var address_one = '';
};
if(billing.address_two != ''){
var address_two = billing.address_two + '<br />';
}else{
var address_two = '';
};
var csz = billing.city + ', ' + billing.state + ' ' + billing.zip + '<br />';
if(billing.phone != ''){
var phone = billing.phone + '<br />';
}else{
var phone = '';
};
var data = name + company_name + address_one + address_two + csz + phone;
$('#billing').empty().append(data);
$('input:text').val('');
$('#same-as-billing').attr('checked', false);
}
});
});
答案 0 :(得分:0)
不是一个巨大的改进,但会帮助John Resig的Javascript Micro Templating
一般来说,你想尝试渲染服务器端的所有内容,但如果你没有选择(来自外部域的数据)它会很有帮助。
答案 1 :(得分:0)
你可以遍历json对象并创建sting:
var data = [];
$.each(billing, function(key, value){
if(value != "") data.push(value);
});
data = data.join("<br />");
但如果您需要的不仅仅是输出对象值(仅举例),那么这对您不起作用。这里没有什么可以优化的。您只能跳过一些else
s
var data = '<a href="../user/view/' + user_id +'">' + billing.fname + ' ' + billing.lname + '</a><br />';
if(billing.company_name != "") data+= billing.company_name+"<br />";
if(billing.address_one != "") data+= billing.address_one+"<br />";
data+= billing.city+", "+billing.state+" "+billing.zip+"<br />";
// and so on