1

私はコーディングをもっと簡単にしようとしているので、グローバルを割り当てました。

var parent = $(this).parent().parent().parent();
var parentModule = $(this).parent().parent().parent().parent();

そして、コード全体でこれらを使用して、 $(this) をはるかに簡単にし、すべての親を節約します。$(this) は技術的にはその特定のイベント (クリック、ホバーなど) 内で普遍的な存在ですが

私が書いた方法のようには不可能だと思うので、実際にこれを行う方法はありますか。多分関数か何か?

var parent, parentModule = null;
  function getParents(e){
  parent = $(e.currentTarget).closest(".module");
  parentModule = $(e.currentTarget).closest(".module").parent();
}
$(close).on('click',function (e) {
 getParents(e);
if (parentModule.hasClass('open')) {
        var a = ReadCookie('ToHide');
        if (a.split(",").length === 0) {
            KillCookie('ToHide');
            var b = "#"+parent.attr("id") + " #"+parentModule.attr("id");
            SetCookie('ToHide', b, 100);
        } else {
           var d = a + "," + "#"+ parent.attr("id") + " #"+parentModule.attr("id");
            KillCookie('ToHide');
            SetCookie('ToHide',d, 100);
        }
        if(animate===true){
        parentModule.fadeOut(function(){
        checkIfVisible();
});
4

1 に答える 1

1

関数を使用してこれらのグローバル変数の値を設定する場合は、これを試してください。

var parent, parentModule = null;
function getParents(e){
  parent = $(e.currentTarget).closest(".yourParentSelector");
  parentModule = $(e.currentTarget).closest(".yourParentModuleSelector");
}

$("button").click(function(e){
  getParents(e);
  //do whatever you want with parent and parentModule variables
});

closest()の代わりに使用parent()

フィドルはこちら

于 2013-06-19T01:33:03.293 に答える