.append 到一个非 DOM 元素 jQuery

Posted

技术标签:

【中文标题】.append 到一个非 DOM 元素 jQuery【英文标题】:.append to a non DOM element jQuery 【发布时间】:2013-12-16 03:39:30 【问题描述】:

我正在尝试附加到非 DOM 元素(为幻灯片添加了 Pagiantion)。

我的代码是:

$("#slides2 .slidesjs-pagination-item a").on("click", function (event) 
    alert('append');
);

这不会给我警报。由于on 正在替换live,我想知道为什么这不起作用?

更新adeno 的评论有帮助,我的代码现在是:

$(document).on("ready", "#slides2 .slidesjs-pagination-item a", function (event) 
    $("#slides2 .slidesjs-pagination-item a").prepend("Image");
    $("#slides2 .slidesjs-pagination-item a").append(" of 30");
);

这不起作用,我如何附加一个在元素加载时进行计算的事件?

【问题讨论】:

$(document).on("click", "#slides2 .slidesjs-pagination-item a", function(event)... Event binding on dynamically created elements?的可能重复 我不明白你的问题与追加有什么关系,也不明白你为什么称它为“非 DOM 元素”。 我只是使用点击功能和警报来测试.on,通过非 DOM 元素我的意思是在文档准备好之前它不存在 $(document).on("click", "#slides2 .slidesjs-pagination-item a", function(event) 工作了谢谢,所以现在我的代码是$(document).on("ready", "#slides2 .slidesjs-pagination-item a", function(event) $("#slides2 .slidesjs-pagination-item a").prepend("Image "); $("#slides2 .slidesjs-pagination-item a").append(" of 30"); ); 哪个不起作用,我如何附加一个在加载元素时recgonises的事件? 【参考方案1】:

您必须将事件绑定到父元素,然后使用selector 参数选择目标元素。你可以找到更多关于.on()here的信息。

$('#slides2').on('click', '.slidesjs-pagination-item a', function(e) 
    alert('append');
);

【讨论】:

【参考方案2】:

试试:

$("#slides2").on("click", ".slidesjs-pagination-item a", function(event)
    alert('append');
);

虽然没有看到任何 html 就很难判断...

【讨论】:

【参考方案3】:

两个潜在的指针:

    下面的行是否返回一个 > 0 的数字?如果不是,您的选择器是错误的。

    alert($("#slides2 .slidesjs-pagination-item a").length)

    您提到您尝试附加到非 DOM 元素。您选择的元素是否完全附加到 DOM?如果不是:您不能单击非 DOM 节点。

【讨论】:

.slidesjs-pagination-item 不是 DOM 元素,它是由 js 文件添加的【参考方案4】: 如果元素不在 DOM 中,

$("#blah") 将不起作用。 我猜你的模板在参数中,所以这样做:

$("#blah", myTemplate).click(...

【讨论】:

以上是关于.append 到一个非 DOM 元素 jQuery的主要内容,如果未能解决你的问题,请参考以下文章

DOM属性操作中CRUD操作

jquer和document加载失败 --解决方案

DOM节点的插入(jQuery)

如何通过 jQuery 的 .append() 添加 DOM 元素(Angular 指令)?

jQuery学习笔记之DOM树创建新节点append方法

jQuery DOM