AJAX调用后无法使用DOM元素

时间:2011-02-24 06:21:01

标签: jquery html ajax

我有一个大型的AJAX响应,它插入了大量的HTML。在此之后,我无法使用任何新创建的ID或类,就像加载表单时它们一样。

我已经研究过.live()解决了我的一个问题而不是另一个问题。

我基本上想要通过点击链接时通过AJAX .html()插入的ID或类来显示DIV。

示例:

CODE:

html_out = "<div class='span-1'><a href='#' onClick='show_sub_row(\"#sub_row" + id + "\"); return false;'>[ + ]</a></div>";
html_out += '<div class="hidden_sub_row prepend-2" style="display: none;" id="#sub_row' + id + '">';
html_out += 'Content';
html_out += '</div>';
$('#search_results').html(html_out);

然后在创建HTML之后我尝试:

function show_sub_row(sub_row) { 
$(sub_row).show('fast');
}

我知道它引用了正确的ID,因为我可以发出警报(sub_row)并显示与使用FireBug显示的ID匹配的正确ID以检查隐藏的DIV。

3 个答案:

答案 0 :(得分:3)

除非sub_row是您在此处表示的代码之外的某个地方的初始化var,否则该块应为:

function show_sub_row(sub_row) { 
$('#sub_row').show('fast');
}

此外,sub_row的实际HTML ID包含#字符,这可能会使查明真正的问题变得更加困难。我会将其修改为:

html_out += '<div class="hidden_sub_row prepend-2" style="display: none;" id="sub_row' + id + '">';

答案 1 :(得分:1)

在sub_row之前使用#

function show_sub_row(sub_row) { 
$('#sub_row').show('fast');
}

答案 2 :(得分:1)

无视我是一个白痴,刚才注意到我在我的ID参考中加入了#标记,这就是为什么它不起作用。