2016-12-28 71 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); 
} 

希望這有助於。