在函数js中获得最接近的tr

时间:2016-12-28 15:23:10

标签: javascript jquery

我有这个js代码:

$(".contenteditable").keyup(function(){
    var data = $(this).text();
    var domId = document.activeElement.id;
    var userId = $(this).closest('tr').find('[type="hidden"]:first').val();
    $.post
    (
        "/users/"+userId,
        {
            data,domId,userId,'_method':'patch'
        },
        function(data)
        {
            console.log(data);
        }
    )
});

工作正常。但是,现在我想将它作为函数使用并将其用于我尝试过的任何页面:

function keyUpUpdate()
{
  var data = document.activeElement.textContent;
  var domId = document.activeElement.id;
  var userId = $(this).closest('tr').find('[type="hidden"]:first').val();

  console.log(userId);
}

userId在此功能中无效。 如何从函数内的活动元素中获取最接近的tr,然后是第一个输入类型隐藏值。

1 个答案:

答案 0 :(得分:3)

this在您的函数中没有上下文,您应该将当前对象作为参数发送到keyUpUpdate(),然后根据此对象获取userId

$(".contenteditable").keyup(function(){
    keyUpUpdate($(this));

    //Other code
})

function keyUpUpdate(_this)
{
    var data = document.activeElement.textContent;
    var domId = document.activeElement.id;
    var userId = $(_this).closest('tr').find('[type="hidden"]:first').val();
    console.log(userId);
}

或者如果您只是在keyup上执行此功能,则可以直接调用它,然后this对象将动态传递:

$(".contenteditable").keyup(keyUpUpdate);

function keyUpUpdate()
{
    var data = document.activeElement.textContent;
    var domId = document.activeElement.id;
    var userId = $(this).closest('tr').find('[type="hidden"]:first').val();

    console.log(userId);
}

希望这有帮助。