var func = function()
{
$(this).hide();
$parent = $(this).parent();
$parent.removeClass('my_signature_mouseover');
var text = $(this).val();
var $span = $("#status span");
$span.text(text);
$span.show();
};
$("#status input").keyup(function (e) {
var keyCode = e.keyCode || e.which;
if (keyCode == 13) {
func();
}
}).blur(func);
如果模糊或按“Enter”,我想让func
运行。
但上面的代码只有在模糊时才有效
在按“Enter”的情况下,它报告“拒绝访问parentNode的权限”。
虽然我知道它与this
关键字在不同的上下文中有关,但我不知道如何修复它。
答案 0 :(得分:1)
您使用正常的函数调用调用func
,导致func
内部,this
变量将引用全局对象(窗口)。
您必须使用call
执行该函数,以保留上下文('this'
值),这是触发事件的元素:
$("#status input").keyup(function (e) {
var keyCode = e.keyCode || e.which;
if (keyCode == 13) {
e.preventDefault(); // stop event propagation
func.call(this);
}
}).blur(func);
答案 1 :(得分:-1)
试试这个:
var func = function(elem)
{
elem.hide();
var $parent = elem.parent();
$parent.removeClass('my_signature_mouseover');
var text = elem.val();
var $span = $("#status span");
$span.text(text);
$span.show();
};
$("#status input").keyup(function (e) {
var keyCode = e.keyCode || e.which;
if (keyCode == 13) {
func($(this));
}
}).blur(function () {
func($(this));
});