2014-02-28 36 views
0

我可以在$.post? 之后使用$(this).parentsUntil()...我需要记住DOM中select元素的变化,然后将从我的PHP收集的信息附加到下一个选择。

//OPTION SELECTED 
$('body').on('change','.provincias, .partidos', function(e) { 
    var idSelect = $(this).attr('id'); 

    var dataSelect = $(this).select2('data'); 
    var value = dataSelect.id; 

    $.post('php/select/script.php', {id:idSelect, id_provincia:value, id_partido:value } , function(respuesta) { 
     data = JSON.parse(respuesta); 
     if(data.control == 0){ 
      alert(data.error) 
      window.location.replace(data.url); 
     }else{ 
      if(idSelect == data.thisSelect){ 
       for(var u=0; u<data.array1.length; u++){ 
        $(this).parentsUntil('.formRow').next().children(data.nextSelect).append('<option value="' + data.array1[u].id + '">' + data.array1[u].nombre + '</option>'); 
       } 
      }else if(idSelect == data.thisSelect){ 
       for(var t=0; t<data.array1.length; t++){ 
        $(this).parentsUntil('.formRow').next().children('".' + data.nextSelect +'."').append('<option value="' + data.array1[u].id + '">' + data.array1[u].nombre + '</option>'); 
       } 
      } 
     } 
    }); 

}); 

回答

0

典型的解决方案是定义另一个变量来保存的this的值,例如self,或在这种情况下,你可能会想将它命名target

... 
var target = this; 
$.post('php/select/script.php', {id:idSelect, id_provincia:value, id_partido:value } , function(respuesta) { 
    // Use target here. 
} 
0

只是保存在$(this)一个变量。

$('body').on('change','.provincias, .partidos', function(e) { 
var el = $(this); 

... 

el.parentsUntil('.formRow').next().children(data.nextSelect).append('<option value="' + data.array1[u].id + '">' + data.array1[u].nombre + '</option>'); 
相关问题