繁体   English   中英

如何将“ this”作为参数传递给jQuery中的函数?

[英]How to pass to 'this' as a parameter to a function in jQuery?

这是我的尝试:

$(document).ready(function () {

   function hideshow(obj){
       $(obj).closest(".actions").hide(); 
       $(obj).closest(".actions").prevAll(".nume_serviciu").hide();
       $(obj).closest(".actions").prevAll(".nume_serviciuHidden").show();

       $(obj).closest(".actions").parent(".fct-desc").next(".fct-buc").find(".cantitateHidden").show();
       $(obj).closest(".actions").parent(".fct-desc").next(".fct-buc").find(".b").hide();

       $(obj).closest(".actions").parent(".fct-desc").nextAll(".fct-pretu").find(".pret_unitarHidden").show();
       $(obj).closest(".actions").parent(".fct-desc").nextAll(".fct-pretu").find(".c").hide();
    }

    $(".cancel_rand_update").click(function(obj){ 
        hideshow(obj);
    });
});

这是正在执行相同操作的代码:

$(".cancel_rand_update").click(function(){ 
   $(this).closest(".actions").hide(); 
   $(this).closest(".actions").prevAll(".nume_serviciu").hide();
   $(this).closest(".actions").prevAll(".nume_serviciuHidden").show();

   $(this).closest(".actions").parent(".fct-desc").next(".fct-buc").find(".cantitateHidden").show();
   $(this).closest(".actions").parent(".fct-desc").next(".fct-buc").find(".b").hide();

   $(this).closest(".actions").parent(".fct-desc").nextAll(".fct-pretu").find(".pret_unitarHidden").show();
   $(this).closest(".actions").parent(".fct-desc").nextAll(".fct-pretu").find(".c").hide();
});

我的问题是如何将this元素作为参数传递给函数?

你可以做

$(".cancel_rand_update").click(function(){ 
    hideshow($(this));
});

点击处理程序函数参数不是元素,而是事件。 使用this代替:

$(document).ready(function () {
   function hideshow(obj){
       obj.closest(".actions").hide(); 
       obj.closest(".actions").prevAll(".nume_serviciu").hide();
       obj.closest(".actions").prevAll(".nume_serviciuHidden").show();

       obj.closest(".actions").parent(".fct-desc").next(".fct-buc").find(".cantitateHidden").show();
       obj.closest(".actions").parent(".fct-desc").next(".fct-buc").find(".b").hide();

       obj.closest(".actions").parent(".fct-desc").nextAll(".fct-pretu").find(".pret_unitarHidden").show();
       obj.closest(".actions").parent(".fct-desc").nextAll(".fct-pretu").find(".c").hide();
    }

    $(".cancel_rand_update").click(function(e){ 
        hideshow($(this));
    });
});

您可以这样做:

(".cancel_rand_update").click(hideshow);

这是一个小例子:

function handleClick (event) {
  console.log( this, event );
}

$('.something').on('click', handleClick);

thishandleClick将被点击的元素。 第一个参数是事件。

小提琴: http : //jsbin.com/sefuqowu/1/edit

PS:缓存$(obj)或现在,将$(this)var $this = $(this)然后只使用$this

使用call()传递上下文:

$(".cancel_rand_update").click(function (obj) {
    hideshow.call(this);
});

然后该函数应该工作:

function hideshow() {
    $(this).closest(".actions").hide();
    $(this).closest(".actions").prevAll(".nume_serviciu").hide();
    $(this).closest(".actions").prevAll(".nume_serviciuHidden").show();

    $(this).closest(".actions").parent(".fct-desc").next(".fct-buc").find(".cantitateHidden").show();
    $(this).closest(".actions").parent(".fct-desc").next(".fct-buc").find(".b").hide();

    $(this).closest(".actions").parent(".fct-desc").nextAll(".fct-pretu").find(".pret_unitarHidden").show();
    $(this).closest(".actions").parent(".fct-desc").nextAll(".fct-pretu").find(".c").hide();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM