【问题标题】:Jquery selector problemjQuery选择器问题
【发布时间】:2010-12-01 20:10:21
【问题描述】:

我在一个表中有两个 ID 为 row_26 和 notificationrow_26。 notificationrow_26 在页面加载后动态添加到 DOM。

我想突出显示notificationrow_26。所以我用

var deviceUID = 26;
$("#notificationrow_" + deviceUID).effect("highlight", {}, 3000);       

但是当我这样做时。它不会突出显示该行。我也尝试访问 notificationrow_26 但它甚至无法访问。

当我要求它突出显示 row_26 时。我听说了一些关于 jquery live 的信息,但是我如何使用 jquery live 访问它?我认为 jquery live 仅用于事件和东西。我只想访问已动态添加到 DOM 的这一行。

我错过了什么吗?

【问题讨论】:

  • 再来一些代码怎么样?新添加的行是否有背景色? (highlight 需要一个才能工作,并且其中的单元格需要有背景以阻止它们遮挡行背景。)

标签: jquery dom jquery-selectors


【解决方案1】:

将元素添加到 DOM 后,您需要调用 .effect 语句。如果您通过“点击”或其他常见事件将元素附加到 DOM,则可以使用 .live(但不是“更改”,您需要 livequery)。

【讨论】:

  • 为了澄清 meder 的意思,当您第一次加载页面时,jQuery 将遍历您要求它注意或更改的任何元素,并将操作绑定到该元素。因此,当您在加载后向 DOM 添加内容时,jQuery 不会识别这些新元素,除非它被告知它们。
【解决方案2】:

我不熟悉.effect(),它是插件还是其他 JavaScript 框架的一部分?以下代码将突出显示该行,前提是与页面上的$ 简写没有冲突

var deviceUID = 26;
$("#notificationrow_" + deviceUID).css('background-color','highlight');

这只能在行插入到 DOM 之后应用(我的意思是,当命令执行时,它只会影响那些与当时存在于 DOM 中的选择器匹配的元素)。

因此,根据添加行的方式,您可以在回调函数中添加突出显示(如果有),在插入 DOM 之前/之后将突出显示命令链接到该行。 Here's a demo 显示上述代码。

【讨论】:

    猜你喜欢
    • 2011-04-04
    • 2011-10-31
    • 2010-11-25
    相关资源
    最近更新 更多