2

ビューで drupal 7 を使用しており、見つけたアップ/ダウン テキスト スライドに jquery スクリプトを使用しています。うまくいきましたが、ajaxでフィルターを公開したビューで使用しようとすると、うまくいかないようです。

ネットでjqueryスクリプトがライブまたはバインドまたはデリゲートを使用する必要があることを発見しましたが、それを理解することはできません。以下は私が使用するスクリプトです:

jQuery(function() {
    jQuery('.feature_box').showFeatureText();
});

jQuery.fn.showFeatureText = function() {
    return this.each(function() {
        var box = jQuery(this);
        var text = jQuery('p', this);
        text.css({
            position: 'absolute',
            bottom: '0%'
        }).hide();
        box.hover(function() {
            text.slideDown("fast");
        }, function() {
            text.slideUp("fast");
        });
    });
}

どうもありがとうございました

4

2 に答える 2

0

プラグインを、ajaxを介して置き換えられない要素にアタッチすることをお勧めします。また、接続されているイベントハンドラー内でターゲットを指定できるon()を使用します。

jQuery(function() {
    jQuery('.element_containing_feature_box').showFeatureText();
});

jQuery.fn.showFeatureText = function() {

    return this.on('mouseenter', '.feature_box', function(e){
        $(this).find('p').css({
            position: 'absolute',
            bottom: '0%'
        }).hide();
    }).on('mouseleave', '.feature_box', function(e){
        $(this).find('p').slideUp("fast");
    });
}​

または、ajaxが成功したときにプラグインを再度呼び出します。

jQuery.ajax(options).done(function() {
    jQuery('.feature_box').showFeatureText();
});
于 2012-09-02T02:40:41.117 に答える
0

関数に変換box.hover.live、可能であればクラス/ID名でライブ関数を直接使用し、

jQuery(".class").hover(/* hover js code */);

また

box.live("mouseover", function(){
    // mouseover js code
});

box.live("mouseout", function(){
    // mouseout js code
});
于 2012-09-01T19:09:19.740 に答える