JQuery在setTimer函数中获取元素

时间:2017-02-21 20:37:53

标签: javascript jquery

我有动态元素点击并保持的事件

    var timeoutId = 0;
    $(document).on('mousedown', '.createbtn', function(){
        timeoutId = setTimeout(showNewInfoCreateDlg, 1000);
    }).on('mouseup mouseleave', '.createbtn', function() {
        clearTimeout(timeoutId);
    });

,功能是" showNewInfoCreateDlg" 我需要知道点击并保持的元素的id是什么

    function showNewInfoCreateDlg(){
      alert($(this).attr('id'));
    }

该功能提醒"未定义"

这是我的问题的jsfiddle:

JsFiddle

1 个答案:

答案 0 :(得分:1)

将其显式绑定到函数:

var timeoutId = 0;
$(document).on('mousedown', '.createbtn', function(){
    timeoutId = setTimeout(showNewInfoCreateDlg.bind(this), 1000);
}).on('mouseup mouseleave', '.createbtn', function() {
    clearTimeout(timeoutId);
});

澄清一下:bind()函数将第一个参数的值绑定到this内的showNewInfoCreateDlg变量。这称为显式绑定。