6

小さな jquery スクリプトを作成しましたが、カスタム関数で (これを) 使用するのに問題があります。

これはコードです:

jQuery("li").click(function()
{
    var scrollTop = jQuery(window).scrollTop();
    if(scrollTop > 0)
    {
        jQuery('html, body').animate( { scrollTop: 0 }, 'slow', function()
        {
            fadeItems();
        });

    }
    else
    {
        fadeItems();    
    }

});

function fadeItems()
{       
    var slogan = jQuery(this).children('p').html();

    jQuery('#slogan_text').fadeOut(150, function(){
        jQuery('#slogan_text').fadeIn(150).html(slogan);
    });

    var content = jQuery(this).children('#post_content_large').html();
    jQuery('#content_view').html(content).hide();

    var status = jQuery("#readMore").html();

    if(status == 'Verbergen')
    {
        jQuery('#content_view').fadeIn(500, function(){
            jQuery('#content_view').fadeIn(500).html(content);
        });
    }

    var title = jQuery(this).children('h3').html();

    jQuery('#title_content').fadeOut(150, function(){
        jQuery('#title_content').fadeIn(150).html(title);
    });
}

そのため、リスト項目をクリックすると関数が実行され、うまくいきますが、(this) の値は空です

誰かがこれを修正する方法を知っていますか?

前もって感謝します!

4

3 に答える 3

2

.callここで役立ちます:

jQuery("li").click(function () {
    var self = this;
    var scrollTop = jQuery(window).scrollTop();
    if(scrollTop > 0) {
        jQuery('html, body').animate( { scrollTop: 0 }, 'slow', function() {
            fadeItems.call(self);
        });    
    }
    else {
        fadeItems.call(self);
    }    
});
于 2012-04-26T14:25:56.893 に答える
2

適用を使用:

fadeItems.apply(this);

このようにして、関数呼び出しのコンテキストを指定できます(手動でthisinの値を割り当てますfadeItems

編集:@KevinBが指摘しているようthisに、親関数でエイリアスを作成してから、関数にvar that = this;渡す必要があります。thatfadeItems.apply(that);

于 2012-04-26T14:24:49.337 に答える
2

それを使用できるように関数に渡す必要があるため(これとは異なることを使用することもあり、混乱が少なくなります(クリックされたアイテムが必要なため編集されます))

    var clicked = this;
    jQuery('html, body').animate( { scrollTop: 0 }, 'slow', function()
    {
        fadeItems(clicked);
    });

function fadeItems(el)
{       
var slogan = jQuery(el).children('p').html();
于 2012-04-26T14:22:15.083 に答える