我有一个大型 AJAX 响应,其中插入了大量 HTML。此后,我无法使用任何新创建的 ID 或类,就好像它们在加载表单时就存在一样。
我研究了 .live() ,它解决了我的一个问题,但没有解决另一个问题。
我基本上想通过单击链接时通过 AJAX .html() 插入的 ID 或类来显示 DIV。
示例:
代码:
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),并且它显示的正确 ID 与使用 FireBug 检查隐藏 DIV 时显示的 ID 相匹配。
最佳答案
除非 sub_row 是您在此处表示的代码之外的某个初始化变量,否则该 block 应该是:
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 + '">';
关于jquery - AJAX 调用后无法使用 DOM 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5101124/