1

リストを使用してドロップダウンプラグインに取り組んでいます。私はそれを機能させましたが、同じページに複数のドロップダウンがある場合、閉じるようにトリガーしているドロップダウンを除いて、他のすべてのドロップダウンを閉じたいと思います。

ここに私が持っているものがあります:

(function($){

  $.fn.dropDown = function(options) {
      var defaults = {
          wrapper: 'ul'
      }

    var settings = $.extend({}, defaults, options);


    $(this).find(settings.wrapper).hide();
    $(this).css("cursor","pointer");


        $(this).click(function(event) {
            elem= $(this);
            elem.find(settings.wrapper).toggle();
            elem.find("span").toggleClass("menuOpen");
            event.preventDefault();
            event.stopPropagation();
        });

        $(document).click(function() {  
                elem.find("span").removeClass("menuOpen");  
                elem.find(settings.wrapper).hide(); 
                elem.find(settings.wrapper).find("ul").show();  
        });
  };

})(jQuery);

プラグインは次のように呼び出されます。

$('.dropdown').dropDown();

何か案は?

前もってありがとう、ホセ

4

1 に答える 1

0

少し前に似たようなことをしました。

コードで他のすべてのメニューを選択できるようにする方法は、実行時に次のようなカスタム クラスを与えることです。

$(this).addClass("__my_menu");

このようにして、プラグインが設定したメニューをハンドルできます。したがって、現在のメニュー以外のすべてのメニューを閉じたい場合は、次の手順を実行する必要があります。

$('.__my_menu').not($(this)).hide();

もう 1 つのポイントは、documentクリック ハンドラーで varelemが設定されていないため、何も実行されないことです。$(this)代わりに使用する必要があります。

参考文献:

(jQuery 1.7 以降)の代わりに$.offandを使用: http://api.jquery.com/on/$.on$.click

$.notおよびその他のフィルタリング方法: http://api.jquery.com/category/traversing/filtering/

これがお役に立てば幸いです。

于 2012-09-12T13:50:42.950 に答える