Javascript jQuery-hasClass问题

Javascript jQuery-hasClass问题,javascript,jquery,Javascript,Jquery,我有一个在页脚有这些按钮的表单 <button type="button" class="btn btn-warning redirect store-submit">Add and redirect</button> <button type="submit" class="btn btn-success store-submit">Just add</button> 奇怪的是,一级检查起作用了。尽管我点击了任何按钮,但当类“重定向”被选中时,

我有一个在页脚有这些按钮的表单

<button type="button" class="btn btn-warning redirect store-submit">Add and redirect</button>
<button type="submit" class="btn btn-success store-submit">Just add</button>
奇怪的是,一级检查起作用了。尽管我点击了任何按钮,但当类“重定向”被选中时,它不会触发部分。我正在努力解决这个问题,我不知道我可能做错了什么。任何帮助都将不胜感激


祝您愉快。

您需要将回调函数绑定到正确的上下文。一种方法是使用:

您的
$(此)
不再指向按钮。为了解决这个问题,您可以按照@dfsq的建议使用
.bind()
,或者您可以将
$(this)
分配给一个变量,然后使用它。像

var btn = $(this);
然后使用上面的

.done(function(data) {
  $("#add-modal").modal('hide');
  update(data.id);
  if(btn.hasClass('redirect')) {
    //some action
  }
另外,这里的优点是,您不必到处调用
$(this)
,因为您在变量中持有
$(this)
的引用。所以你也可以改变

if($(this).hasClass('store-submit')) {


$.fn.ajax
方法中的回调函数的上下文与预期的不同。您应该设置选项
context:jQuery
ajax
方法的这个
有一个选项:)@A.WolffI知道,jQuery也有
$.proxy
,也可以保存var self=this。我认为公认的答案是最优的。好吧,这似乎很容易。回答得很好。我会尽快接受这个:D
.done(function(data) {
  $("#add-modal").modal('hide');
  update(data.id);
  if(btn.hasClass('redirect')) {
    //some action
  }
if($(this).hasClass('store-submit')) {
if(btn.hasClass('store-submit')) { 

//and practically everywhere you can use btn instead of $(this)