2016-12-28 74 views
2

最接近TR我有这样的JS代码:获取内部功能的js

$(".contenteditable").keyup(function(){ 
    var data = $(this).text(); 
    var domId = document.activeElement.id; 
    var userId = $(this).closest('tr').find('[type="hidden"]:first').val(); 
    $.post 
    (
     "https://stackoverflow.com/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,然后从功能中的活动元素的第一个输入类型隐藏值。

+0

显示HTML,什么错误控制台 –

+0

请须出示你怎么称呼“keyUpUpdate()”,因为也许你在上下文中的问题(这个目标) – Tobia

+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); 
} 

希望这有助于。