我有一个大型的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。
答案 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参考中加入了#标记,这就是为什么它不起作用。