【问题标题】:JQuery - access elements loaded with .ajax [duplicate]JQuery - 访问加载了 .ajax 的元素 [重复]
【发布时间】:2014-11-17 03:29:48
【问题描述】:

我正在将数据加载到

<div id="content_8">
</div>

使用以下函数:

...
var number = 8; //i.e.
$.ajax
({
    url: "load.inc.php",
    dataTypeString:"html",
    data: "var="+number,
    success: function(html)
    {
        $('#content_'+number).html(html);
    }
}); 

这很好用,但是:html 包含不同的 ID,并且加载的 html 看起来像示例

<tr id="someid_8_1234">...</tr>
<tr id="someid_8_7294">...</tr>
<tr id="someid_8_9999">...</tr>

由于它们还没有在 DOM 中注册,所以我不能使用这段代码

$('[id^=someid_]').click(function(){
    $(this).toggle();
});

我快疯了,到目前为止我发现的所有提示都指向我不理解的 delegate() 或 live(),它们大多指向单个示例而不是数百个 ID,有没有办法附加DOM 中的整个 HTML 块?

提前致谢!

【问题讨论】:

  • 如果您使用的是$(document).ready(function() {...},它们应该在 DOM 中。

标签: javascript jquery ajax dom


【解决方案1】:

将此用于动态创建的元素:

$(document).on('click','[id^=someid_]',function()
{
///your code

});

【讨论】:

  • 非常感谢,这就是解决方案!
【解决方案2】:

也许……

     success: function(html)    {
            var newContent = $.parseHTML(html)
            $('#content_'+number).html(newContent);
            $('[id^=someid_]', newContent).click(function(){
                $(this).toggle();
            });
        }

【讨论】:

  • 是的!这和 $(document).on 一样有效,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-15
  • 1970-01-01
  • 1970-01-01
  • 2016-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多