1

コンテンツを読み込んでアニメーション化するjqueryスニペットに関連付けられたアンカーを備えたこのnavmenuがあります。(デモを参照してください:http://d2o0t5hpnwv4c1.cloudfront.net/011_jQuerySite/sample/index.html

さて、いくつかのnavのアンカーでは、このプラグインが起動しないようにしたいと思います(代わりに、いくつかのnavmenuのアンカーを厳密にScrollToプラグインに関連付けることができるようにしたいため)。

私の質問は、これに何を追加できるかということです。

$(document).ready(function() {

var hash = window.location.hash.substr(1);
var href = $('#nav li a').each(function(){
    var href = $(this).attr('href');
    if(hash==href.substr(0,href.length-4)){
        var toLoad = hash+'.php #content';
        $('#content').load(toLoad)
    }                                           
});

$('#nav li a').click(function(){

    var toLoad = $(this).attr('href')+' #content';
    $('#content').hide(888,loadContent);
    $('#load').remove();
    $('#wrapper').append('<span id="load">LOADING...</span>');
    $('#load').fadeIn(888);
    window.location.hash = $(this).attr('href').substr(0,$(this).attr('href').length-4);
    function loadContent() {
        $('#content').load(toLoad,'',showNewContent())
    }
    function showNewContent() {
        $('#content').show(888,hideLoader());
    }
    function hideLoader() {
        $('#load').fadeOut(888);
    }
    return false;

});

});

...アンカーにclass="scroll"が関連付けられている場合は常に、上記のすべてが実行されないようにするためですか?

4

1 に答える 1

0

を使用してアンカーを除外できます.not(selector)

$(document).ready(function() {

var hash = window.location.hash.substr(1);
var href = $('#nav li a').not('.scroll').each(function(){
    var href = $(this).attr('href');
    if(hash==href.substr(0,href.length-4)){
        var toLoad = hash+'.php #content';
        $('#content').load(toLoad)
    }                                           
});

$('#nav li a').not('.scroll').click(function(){

    var toLoad = $(this).attr('href')+' #content';
    $('#content').hide(888,loadContent);
    $('#load').remove();
    $('#wrapper').append('<span id="load">LOADING...</span>');
    $('#load').fadeIn(888);
    window.location.hash = $(this).attr('href').substr(0,$(this).attr('href').length-4);
    function loadContent() {
        $('#content').load(toLoad,'',showNewContent())
    }
    function showNewContent() {
        $('#content').show(888,hideLoader());
    }
    function hideLoader() {
        $('#load').fadeOut(888);
    }
    return false;

});

});
于 2012-09-23T21:31:58.533 に答える