2014-02-28 44 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>'); 
相關問題