[英]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);
this
在handleClick
将被点击的元素。 第一个参数是事件。
小提琴: 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.