如何在jquery ajax成功函数中引用调用dom元素?
时间:2020-03-06 14:56:01 来源:igfitidea点击:
如果基于该元素的ajax调用成功,我正在尝试修改元素的类
<script type='text/javascript'> $("#a.toggle").click(function(e){ $.ajax({ url: '/changeItem.php', dataType: 'json', type: 'POST', success: function(data,text){ if(data.error=='') { if($(this).hasClass('class1')) { $(this).removeClass('class1'); $(this).addClass('class2'); } else if($(this).hasClass('class2')) { $(this).removeClass('class2'); $(this).addClass('class1'); } } else(alert(data.error)); } }); return false; }); </script> <a class="toggle class1" title='toggle-this'>Item</a>
我对问题的理解是,在成功函数中,它引用ajax对象参数,而不是像在click函数的其他位置那样调用dom元素。那么,如何引用调用dom元素并检查/添加/删除类?
解决方案
我们可以将其存储在变量中。例子:
$("#a.toggle").click(function(e) { var target = $(this); $.ajax({ url: '/changeItem.php', dataType: 'json', type: 'POST', success: function(data,text) { if(data.error=='') { if(target.hasClass('class1')) { target .removeClass('class1') .addClass('class2'); } else if(target.hasClass('class2')) { target .removeClass('class2') .addClass('class1'); } } else(alert(data.error)); } }); return false; });
jQuery将事件的目标以及与此事件有关的其他信息传递给处理函数。有关更多信息,请参见http://docs.jquery.com/Events_%28Guide%29.
在代码中,它的引用方式类似于$(e.target)。
我知道它很旧,但是我们可以使用click函数中的'e'参数。