jQuery - 如何简化执行相似但略有不同功能的代码?
jQuery - How do I simplify code that performs similar, but slightly different functions?
我有几行代码执行类似的功能(它们从输入中获取值并附加一行代码)。有什么方法可以简化这些吗?
//======Name
var name = $('input[name=Name]').val();
if (name){
$('.results').append('<div class="item">' + '<p>Your name is ' + name + '.</p>' + '</div>');}
//======Age
var age = $('input[name=YourAge]:checked').val();
if (age){
$('.results').append('<div class="item">' + '<p>Your age is ' + age + '.</p>' + '</div>');}
//======Occupation
var occupation = $('input[name=Occupation]').val();
if(occupation){
$('.results').append('<div class="item">' + '<p>Your occupation is ' + occupation + '.</p>' + '</div>');}
你可以只创建一个函数。
function checkExists(field) {
if(field) {
$('.results').append('<div class="item">' + '<p>Your ' + field.attr('name').toLowerCase() + ' is ' + field + '.</p>' + '</div>');
}
}
我添加了 .toLowerCase
所以它在语法上是有意义的。
当然,您需要调用函数并将字段作为参数传递。
checkExists($('input[name=Name]'));
看看每件作品的相同之处和不同之处。把相似的部分变成函数体,把不同的部分作为函数的参数:
function appendResult(selector, label) {
var result = $(selector).val();
if (result){
$('.results').append('<div class="item">' + '<p>Your ' label ' is ' + result + '.</p>' + '</div>');
}
}
然后,像这样使用它:
appendResult('input[name=Name]', 'name');
appendResult('input[name=YourAge]:checked', 'age');
appendResult('input[name=Occupation]', 'occupation');
注意每段代码的不同之处仅在于所使用的选择器,以及打印的 "label" 来描述该项目。这两部分成为参数,重命名一些变量后,您将拥有一个可以使用的通用函数。
我有几行代码执行类似的功能(它们从输入中获取值并附加一行代码)。有什么方法可以简化这些吗?
//======Name
var name = $('input[name=Name]').val();
if (name){
$('.results').append('<div class="item">' + '<p>Your name is ' + name + '.</p>' + '</div>');}
//======Age
var age = $('input[name=YourAge]:checked').val();
if (age){
$('.results').append('<div class="item">' + '<p>Your age is ' + age + '.</p>' + '</div>');}
//======Occupation
var occupation = $('input[name=Occupation]').val();
if(occupation){
$('.results').append('<div class="item">' + '<p>Your occupation is ' + occupation + '.</p>' + '</div>');}
你可以只创建一个函数。
function checkExists(field) {
if(field) {
$('.results').append('<div class="item">' + '<p>Your ' + field.attr('name').toLowerCase() + ' is ' + field + '.</p>' + '</div>');
}
}
我添加了 .toLowerCase
所以它在语法上是有意义的。
当然,您需要调用函数并将字段作为参数传递。
checkExists($('input[name=Name]'));
看看每件作品的相同之处和不同之处。把相似的部分变成函数体,把不同的部分作为函数的参数:
function appendResult(selector, label) {
var result = $(selector).val();
if (result){
$('.results').append('<div class="item">' + '<p>Your ' label ' is ' + result + '.</p>' + '</div>');
}
}
然后,像这样使用它:
appendResult('input[name=Name]', 'name');
appendResult('input[name=YourAge]:checked', 'age');
appendResult('input[name=Occupation]', 'occupation');
注意每段代码的不同之处仅在于所使用的选择器,以及打印的 "label" 来描述该项目。这两部分成为参数,重命名一些变量后,您将拥有一个可以使用的通用函数。