在$ .post之后运行$(this)?

时间:2014-02-28 03:24:41

标签: javascript jquery html dom

我可以在$(this).parentsUntil()...之后使用$.post?吗? 我需要记住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>');
                }
            }
        }
    });

});

2 个答案:

答案 0 :(得分: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.
}

答案 1 :(得分: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>');