我有这个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
,然后是第一个输入类型隐藏值。
答案 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);
}
希望这有帮助。