javascript - Javascript/Jquery 中的缩短函数

标签 javascript jquery

LF 缩短我的 js/jquery 函数的方法:

$.ajax({ // Start ajax post
..........
success:    function (data) { // on Success statment start
..........
//1. Part
$('var#address').text(data.address);            
$('var#telephone').text(data.telephone);            
$('var#mobile').text(data.mobile);          
$('var#fax').text(data.fax);            
$('var#email').text(data.email);            
$('var#webpage').text(data.webpage);        

//2. Part
if (!data.address){ $('p#address').hide(); } else {  $('p#address').show(); }; 
if (!data.telephone){ $('p#telephone').hide(); } else {  $('p#telephone').show(); }; 
if (!data.mobile){ $('p#mobile').hide(); } else {  $('p#mobile').show(); }; 
if (!data.fax){ $('p#fax').hide(); } else {  $('p#fax').show(); }; 
if (!data.email){ $('p#email').hide(); } else {  $('p#email').show(); }; 
if (!data.webpage){ $('p#webpage').hide(); } else {  $('p#webpage').show(); }; 

}, End Ajax post success statement 

这是我的 html:

<p id="address">Address:<var id="address">Test Street 999 2324233</var></p>
<p id="telephone">Telephone:<var id="telephone">+1 0000009</var></p>
<p id="mobile">Mobile:<var id="mobile">+1 0000009</var></p>
<p id="email">E-mail:<var id="email">info@example</var></p>
<p id="webpage">Web Page:<var id="webpage">www.example.com</var>/p>

我们怎样才能减少选择器*(1.部分)*的数量,否则数量(2.部分)

最佳答案

假设对象的属性名称与元素 ID 的拼写完全匹配,您可以执行以下操作:

for (var k in data) {
    $('var#' + k).text(data[k]);
    $('p#' + k).toggle(!!data[k]);
}

...因为 .toggle()接受一个 bool 值来表示是否显示或隐藏。任何没有匹配元素 ID 的属性都不会产生任何效果。

注意:如果您有多个具有相同 id 的元素,则您的 html 无效,但它仍然有效,因为您的选择器指定了标签和 id。不过,从 var 元素中删除 id 可能会更整洁:

<p id="address">Address:<var>Test Street 999 2324233</var></p>
<!-- etc. -->

使用这个 JS:

$('#' + k).toggle(!!data[k]).find('var').text(data[k]);

然后添加一些代码来隐藏返回的 data 对象中没有的任何元素:

$('var').parent('p').hide();

...并将它们放在一起:

$.ajax({
    // other ajax params here
    success : function(data) {
        $('var').parent('p').hide();
        for (var k in data) {
            $('#' + k).toggle(!!data[k]).find('var').text(data[k]);
        }
    }
});

演示:http://jsfiddle.net/z98cw/1/

关于javascript - Javascript/Jquery 中的缩短函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20326001/

相关文章:

jQuery 使用 cookie 切换表行

javascript - 如何将数据传递给 fancybox 函数?

javascript - Angular.js 仅加载一半时间

javascript - 添加到 Epoch 以在 Javascript 中查找新日期

javascript - 从对象数组中删除键并将值转换为键值对

javascript - YUI 工具提示小部件传递类名而不是 id?

javascript - stdin.write 抛出错误 : write EPIPE

javascript - 允许 JavaScript 闭包从父级作用域继承变量

jquery - Rails 中的 Ajax 调用重复

javascript - 在PHP中获取HTML标签 'select'的值