如何缩短这个加载jQuery?

时间:2010-02-17 13:05:42

标签: javascript ajax jquery

我对jQuery非常好,但是当我得到这样的东西时,我需要一些帮助。

所以我想缩短这段代码:

$(function() {
$('#experience_nav').click(function() {
    $('#contentWrap').load('files.html #content_experience', function() {
        $(this).hide().fadeIn();
        $('#content_experience').siblings().fadeOut();
    });

    return false;
});
$('#aboutme_nav').click(function() {
    $('#contentWrap').load('files.html #content_aboutme', function() {
        $(this).hide().fadeIn();
        $('#content_aboutme').siblings().fadeOut();
    });

    return false;
});
$('#recentclients_nav').click(function() {
    $('#contentWrap').load('files.html #content_recentclients', function() {
        $(this).hide().fadeIn();
        $('#content_recentclients').siblings().fadeOut();
    });

    return false;
});
$('#contactme_nav').click(function() {
    $('#contentWrap').load('files.html #content_contactme', function() {
        $(this).hide().fadeIn();
        $('#content_contactme').siblings().fadeOut();
    });

    return false;
});

});

所以我基本上不必为每个不同的实例调用相同的东西。

任何帮助都很棒!即使只是告诉我它无法完成! : - )

2 个答案:

答案 0 :(得分:9)

// All <a>s wich the ID ends with '_nav'
$('a[id$="_nav"]').click(function() {
    var nav = $(this).attr('id').replace('_nav', '');

    $('#contentWrap').load('files.html #content_' + nav, function() {
        $(this).hide().fadeIn();
        $('#content_' + nav).siblings().fadeOut();
    });

    return false;
})

答案 1 :(得分:1)

试试这个,利用你的命名方案:

$('#experience_nav, #aboutme_nav, #recentclients_nav, #contactme_nav').click(function() {
    var id = '#content_' + $(this).attr('id').replace("_nav","");
    $('#contentWrap').load('files.html ' + id, function() {
        $(this).hide().fadeIn();
        $(id).siblings().fadeOut();
    });
    return false;
});

或者,尽可能轻量级,因为它连接了多次:

$('[id$=_nav]').live('click', function() {
    var id = '#content_' + $(this).attr('id').replace("_nav","");
    $('#contentWrap').load('files.html ' + id, function() {
        $(this).hide().fadeIn();
        $(id).siblings().fadeOut();
    });
    return false;
});