2016-01-23 154 views
-1

如何在输入后看到最近的<i>元素。如何找到最近的元素

我的html代码:

<td data-sort-initial="true" data-value="azert" style="padding:7px;position:relative;"> 
          <input class="form-control input-sm edit2" data-nom_champ="contact_label" data-id_ecole_contact="10" name="contact_label" type="text" value="azert"> 
          <i class="fa fa-spinner fa-spin" id="waiting_label_10" style="display:none;position:absolute;right:10px;top:13px;"></i> 
         </td> 

我的js代码:

$.ajax({ 
      type  : 'POST', 
      url   : $('#url_for_ajax').val()+'/update_ecole_contact_ajax', 
      dataType : 'json', 
      data  : {_token:$('meta[name="_token"]').attr('content'),id_ecole_contact:$(this).data('id_ecole_contact'),nom_champ:$(this).data('nom_champ'),new_value:$(this).val()}, 
      beforeSend : function() { 
       $(this).closest('i').next().show(); 
       // $('#waiting_valeur'+id_ecole_contact).show(); 
      }, 
      success  : function(reponse) { 
       $('#waiting_'+id_ecole_contact).hide(); 
      } 
     }); 

在这个例子中,<i>元素仍然是不可见的。问题是这里:

$(this).closest('i').next().show(); 

但我不知道究竟是什么。

+1

'this'是指AJAX的选择对象'$ .ajax'回调。现在你的问题还不清楚,因为我们不知道你称之为ajax请求的上下文。但是要在ajax回调中设置相关的上下文,请使用'context:this,'作为选项。如果'this'指的是父函数作用域中的'input'元素,那么它应该是:'$(this).next()。show();'。这就是说,因为一个id被设置并且id必须在文档上下文中是唯一的,所以你可以使用:'$('#waiting_label_10')。show();' –

+0

我有一个输入,我发送一个ajax请求当这个输入的值改变时。这个ajax请求在数据库中做了一些更新。在这个过程中,我想在输入后显示一个微调。它更清楚吗?提前致谢。 – Dom

+0

当我尝试$(this).next()。show():它工作在ajax请求之外。但它不起作用在ajax请求中,进入beforeSend部分 – Dom

回答

1

I detail : I have an input and I send and ajax request when the value of this input changes.

尝试使用event.target.next()

$("input").change(function(event) { 
    $.ajax({ 
    type: 'POST', 
    url: $('#url_for_ajax').val() + '/update_ecole_contact_ajax', 
    dataType: 'json', 
    data: { 
     _token: $('meta[name="_token"]').attr('content'), 
     id_ecole_contact: $(this).data('id_ecole_contact'), 
     nom_champ: $(this).data('nom_champ'), 
     new_value: $(this).val() 
    }, 
    beforeSend: function() { 
     // here, `event.target` is `input` 
     $(event.target).next("i").show(); 
     // $('#waiting_valeur'+id_ecole_contact).show(); 
    }, 
    success: function(reponse) { 
     $('#waiting_' + id_ecole_contact).hide(); 
    } 
    }); 
}) 
+0

我有这个错误:ReferenceError:事件未定义 – Dom

+0

@ user2672338在.change()事件中有'$ .ajax()'吗? '.change()'事件处理函数中包含'event'参数吗? – guest271314

+0

非常感谢,现在工作正常。 “事件”丢失。 Merci beaucoup。 – Dom