JQuery ajax在返回的HTML中找不到元素

时间:2010-10-01 20:48:33

标签: jquery

我有一个简单的

$.ajax({
 url: someUrl, 
 method: 'get',
 dataType: 'html',
 success: function(data) { 
            $('#someId').append($(data));
          } 
 });

问题是我无法在返回的数据中找到元素。如果有一个id =“myInput”的输入,我无法用$('#myInput')或$('input [id = myInput]')来获取它。我 CAN 找到它:

$('input').each(function(i,e){ if($(e).attr('id') == 'myInput'){ doStuff(e); } });

但是谁每次都想这样做?我看到this question,但提供的解决方案对我不起作用。除了我在那里尝试了什么

$('#someId').html(data);
$(data).appendTo($('#someId'));

我正在使用jQuery 1.4.2。想法,建议?

4 个答案:

答案 0 :(得分:3)

我认为您要做的是访问DOM中尚未附加到DOM的元素。在您$(someElement).html(data)或将其附加到某处之前,它只是一个数据返回对象,而不是DOM的一部分。

另外,考虑使用getJSON将数据作为JSON返回(通过将其放入PHP中的数组并执行echo json_encode($array);来将其编码为远程端的JSON 然后你可以通过它的数组名称访问每个项目,作为data.NAME并将其分配给你的DOM部分。

答案 1 :(得分:2)

我能想到的唯一原因是你的HTML语法在某处出现了格式错误。尝试在myInput元素之前和之后取出代码块,并继续这样做,直到它按预期运行。然后慢慢地将碎片放回去,直到你能确切地确定问题所在。

答案 2 :(得分:0)

如果你真的需要这样做(不确定原因),那么在返回的数据上使用.find

所以你的成功功能就像

success: function(data) {
  $(data).find("#inputId").doSomething();
  $('#someId').append(data);
} 

FatherStorm可能是正确的,如果你正在做追加,然后只是使用$("#inputId")搜索整个圆顶,它可能只是在DOM中不存在。

答案 3 :(得分:0)

这是我的功能:

$.ajax({
        type: 'POST',
        url: direccion_url,
        dataType: 'html',
        success: function(datos){
                $('#panel_salida').html(datos);
                $('#panel_salida').find('#apelli1_txt').val('valor');
        }
});

我希望它可以帮到你。