我正在尝试向元素添加一个函数。后来我试图删除该功能。它不适用于jQuery。
var myFunction=function(element){
$(element).animate({
/* Some Code in here */
});
myFunction(element); // I want in a loop
}
/* No issues with the function */
/* binding this function in another place */
$(otherElement).on('focus', myFunction);
/* In another location I want to off the focus on the element */
$(otherElement).on('focus'); --> This is not working. My expectation is the animation to be stopped.
我已尝试使用live / die并绑定/取消绑定,但没有运气。
答案 0 :(得分:0)
var myFunction=function(element){
--->你只是期望一个dom元素作为参数。但是$(otherElement).on('focus', myFunction);
,传递给myFunction
的是jQuery Event对象,而不是dom元素。
所以,试试这个:
$(otherElement).on('focus', function(ev/*this is event, not element*/) {
myFunction(this);
});
如果你想取消绑定事件,只需使用$(otherElement).off('focus');
答案 1 :(得分:0)
尝试
var myFunction = function(element) {
var $element = $(element).animate({
height: 'toggle'
}, {
done: function() {
var flag = $element.data('stopAnimation');
if (flag) {
$element.removeData('stopAnimation');
return;
}
myFunction(element);
}
});
// I want in a loop
}
$('#otherElement').on('focus', function() {
myFunction($('#element'))
});
$('#otherElement').on('blur', function() {
$('#element').stop(true, true).data('stopAnimation', true);
});
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.js"></script>
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/themes/redmond/jquery-ui.css">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.js"></script>
<input id="otherElement" />
<div id="element">element</div>
注意:我不知道这是否是最佳解决方案