我在jQuery Callback函数中遇到这个元素时遇到了麻烦。我已尝试过$(this)和$(this.element)的各种建议但没有成功。
EntityManager entityManager = getEntityManager();
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
entityManager.persist(object);
transaction.commit();
long id = object.getId();
entityManager.close();
我一直在想我需要一些方法来将这个引用传递给回调函数,但没有其他类似帖子似乎建议该路由。
这是我想要做的JSFiddle。功能的要点是我试图根据tabindex自动前进到下一个输入。
http://jsfiddle.net/helfon/fdu8xw0h/2/
由于
答案 0 :(得分:0)
根据日志,jQuery fn中的Public Class Test_Request
Property item1 As String
Get
Return m_item1
End Get
Set(value As String)
m_item1 = value
End Set
End Property
Private m_item1 As String
Property item2 As String
Get
Return m_item2
End Get
Set(value As String)
m_item2 = value
End Set
End Property
Private m_item2 As String
End Class
关键字似乎指向了窗口对象,我已按照以下方式绑定了这些函数,并在this
中传递了this
{1}},并让它工作,以便apply
指向输入元素:
this
http://jsfiddle.net/fdu8xw0h/9/
你必须迭代元素数组,因为你的选择器返回一个输入数组,所以你必须单独处理它们,否则你的事件只会发生一次,我已经测试了它,它来自第一个输入到第二个然后它停止工作。通过我在这里粘贴的方法,它将从输入到输入。
答案 1 :(得分:0)
从您的代码中看起来您希望将发生按键的元素this
传递给回调。
要实现这一点,您需要将正确的上下文传递给timeout
处理程序,我们可以使用.bind(),如下所示。
另外,为了使计时器正常工作,还可以进行其他一些修正。
$.fn.onTypeFinished = function(func) {
$(this).bind("keypress", onKeyPress)
function onKeyPress() {
var onTypeFinished = $(this).data('onTypeFinished');
if (!onTypeFinished) {
onTypeFinished = {};
$(this).data('onTypeFinished', onTypeFinished);
}
clearTimeout(onTypeFinished.keytimer);
onTypeFinished.keytimer = setTimeout(onTimeOut.bind(this), 500);
}
function onTimeOut() {
func.apply(this);
}
return this;
};
$(".user-input").onTypeFinished(function() {
//$('input[tabindex=3]').focus();
var ntabindex = parseFloat(this.getAttribute('tabindex'));
ntabindex++;
$('input[tabindex=' + ntabindex + ']').focus();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input id="1" tabindex=1 class="user-input">
<input id="2" tabindex=2 class="user-input">
<input id="3" tabindex=3 class="user-input">
<input id="4" tabindex=4 class="user-input">
答案 2 :(得分:-1)
每当您更改范围时,您应该了解this
会发生变化。始终var $this = $(this)
将其锁定。
$.fn.onTypeFinished = function (func) {
var $this = $(this);
$this.bind("keypress", onKeyPress);
function onKeyPress() {
setTimeout(onTimeOut, 500);
}
function onTimeOut() {
func($this); //I would personally send this, like how you do $.each(function(count, element){})
}
return this;
};
$(".user-input").onTypeFinished(function (t) {
var ntabindex = parseInt($(t).attr('tabindex')) + 1; //You should parse int here
$('input[tabindex=' + ntabindex + ']').focus();
});
$.fn.onTypeFinished = function (func) {
var $this = $(this);
$this.bind("keypress", onKeyPress);
function onKeyPress() {
setTimeout(function(){
func($this);
}, 500);
}
return this;
};
$(".user-input").onTypeFinished(function (t) {
$('input[tabindex=' + String(parseInt($(t).attr('tabindex')) + 1) + ']').focus();
});