中易网

jquery 自定义事件怎样传递 this

答案:3  悬赏:0  
解决时间 2021-04-07 11:49
$(function(){
$(".Pitm").touchwipe({
wipeLeft:function(){ Showdel();},
min_move_x: 20,
min_move_y: 20,
preventDefaultEvents: true
})
})

function Showdel (c){
c.hide();
}
其中 .Pitm 有多个,需要隐藏当前容器
最佳答案
$(function(){
    var fun = function (dom) {
        var obj = {
            wipeLeft: function(){ 
                Showdel(dom);
            },
            min_move_x: 20,
            min_move_y: 20,
            preventDefaultEvents: true
        };
        return obj;
    };
    $(".Pitm").touchwipe(fun ($(this)));
});

function Showdel (c){
    c.hide();
}
全部回答
两个地方需要说明 1. $.fn.xxx 中的 this 指向的是 $() 调用时的 jquery 对象,不用再通过$来封装; 2. $.fn.longpress 中,如果要调用参数里的 fn,并且正确传递dom对象的话,需要写成类似以下这样: $.fn.longpress = function(fn) {   ...   this.each(function() {     fn.apply(this  );   }); };用 apply 方法来替换回调函数fn中的 this 。 具体来说,在settimeout的时候,可以类似这么调用: timeout = settimeout(function() {   fn.apply($temthis[i]); }, 800);这样,在 fn() 中的this就变成当前dom对象了。 但是,这样写还有一个重要问题,那就是变量 i ,它的值在当前闭包环境中会变成 $temthis.length ,导致代码出错。要正确工作,需要改成这样: for(var i = 0; i < $temthis.length; i++) {   (function(target) {     var timeout;     target.addeventlistener('touchstart', function(event) {       timeout = settimeout(function() {         fn.apply(target);       }, 800);     }, false);     target.addeventlistener('touchend', function(event) {       cleartimeout(timeout);     }, false);   })($temthis[i]); }这样创建一个闭包,确保$temthis[i]在每个闭包中都是正确的。另外注意那个timeout,由于对象可能有多个,因此每个对象需要一个单独的 timeout 。 使用 jquery 的方法会简化一些,含义是一样的,如下: $temthis.each(function() {     var timeout, target = this;     this.addeventlistener('touchstart', function(event) {       timeout = settimeout(function() {         fn.apply(target);       }, 800);     }, false);     this.addeventlistener('touchend', function(event) {       cleartimeout(timeout);     }, false); });
定义一个 var that = this ,用that替换子作用域链
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
从塘沽坐几路公交车可以到东疆港人工沙滩
wow客户端过大,删wow客户端过大,删了data/c
请问我的手机是电信版的马上电信卡不用了,用
求穿越洪荒当人皇的小说。
psp 3.71M33-2 游戏找不到
忆口香·华仔龙虾地址有知道的么?有点事想过
新买的水粉调色板怎么处理
1.4t凌度时间久了烧机油吗?
黄非红酸汤龙虾怎么做?
CCTV3568卫星锅能收多少个台
“人不犯我,我不犯人”怎么翻译!!!???
宁波自然环境怎么样?
汉中米皮用什么米
女朋友经常耍小脾气怎么办啊。。。求情圣指教
迪拜发型工作室在什么地方啊,我要过去处理事
推荐资讯
中职与高中有什么区别~~?/
来,看看人家外国人怎么玩打印机的1
盛都花苑东区在什么地方啊,我要过去处理事情
我的哈飞民意仪表有时走有是停.请问那为大虾
福泉市黄丝镇要修水库吗?
怎么做个无口无心无表情的人?
CF怎么看自己的战友是谁
法布尔昆虫记的蜜蜂是怎样飞回家的
正宗兰州牛肉拉面大盘鸡地址在什么地方,想过
为什么我的电脑打开无线网络连接开关指示灯却
求生肉 fate stay night ubw2014 上季00~12话
做梦老是梦到牙松动,快掉了的感觉,记忆最深
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?