【问题标题】:jQuery - Find dynamically created element without eventsjQuery - 查找没有事件的动态创建的元素
【发布时间】:2015-10-11 07:11:57
【问题描述】:

这个问题之前有人问过,答案是这样的:

$('#container').on('click','#dynamicElement', function(){ /* the code */ });

点击上面的代码会找到#dynamicElement。 但是如果没有点击,也没有任何其他事件呢?

假设以下场景:

$.ajax(
    url:'file.php',
    data: {'param':'value'},
    success: function(response){
         /*
         how would I get #dynamicElement if it was not click on?
         the element had no event fired at all, nor had any of its parennt
         containers.

          Now what?
         */
    }
);

【问题讨论】:

  • 看起来你想通过使用普通的jquery选择器$('#dynamicElement')来获取成功回调中的元素@
  • 我想它就像$('#dynamicElement') 一样简单,我一直避免这样做,因为我知道它永远不会起作用

标签: javascript jquery html ajax dynamically-generated


【解决方案1】:

如果您的新元素正在success 回调内添加到页面, 届时您可以致电$('#dynamicElement')

在回调之外的任何地方使用 $('#dynamicElement') 都不会返回该元素,因为它尚未添加到 DOM。

【讨论】:

  • 谢谢。愿意解释为什么会这样吗?
  • 我假设 #dynamicElement 正在添加到成功功能的页面中。它基本上归结为这样一个事实,即一旦元素存在于 DOM 上,您就需要对其进行查询。
【解决方案2】:

事件绑定的工作原理是只要该元素在 DOM 本身中,您就可以通过

访问它
$('#dynamicElement)

您需要事件委托的原因是当您在绑定事件之后动态创建元素时。然后,当事件被触发时,它会查看您绑定到的元素的所有子元素,以查找是否有任何元素与您的选择器匹配。

但是,如果你知道该元素已经被追加到 DOM 中,你可以直接绑定它而无需事件委托,通过 ID 找到它来访问它。

如果它还没有,你就没有办法操纵它,因为它还不存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 2020-09-29
    相关资源
    最近更新 更多