如何为所有动态生成的 div 添加常用的 Javascript 函数? [复制]

Posted

技术标签:

【中文标题】如何为所有动态生成的 div 添加常用的 Javascript 函数? [复制]【英文标题】:How to add common Java Script function to all div generated dynamically? [duplicate] 【发布时间】:2015-07-19 09:06:17 【问题描述】:

如何将javascript函数添加到动态生成的所有div中。在 _data_grid.html 中,div bucket 是动态生成的,id 为 forloop.counter0。我想添加常用的javascript函数。喜欢显示和隐藏 div 的某些部分。所有分区都不一样,希望 JavaScript 函数单独工作。我将如何做到这一点。

_data_grid.html

   <section id="grid_content">
      % for row in rows%
        <div class="bucket" id="bucketforloop.counter0">
             row.render 
        </div>
        % empty %                             
             table.get_empty_message 
            % endfor %
    </section>

所有的分割都会分开工作。请看下图,如果我点击1st div上的hidecontent,那么它会隐藏1st div其他会隐藏,如果我点击 2nd div 然后它将隐藏 2nd div,其他 div 不会隐藏。

【问题讨论】:

delegate() 函数或使用 $("document.body").on("div.bucket","click", function()) 应该适合你。 "click"可以替换成你想要的事件 你的意思是$("#grid_content").on("click","div.bucket", function()) @Sanchit,但是所有的潜水都是分开工作的.. 你是如何设法忽略所有在你写这个问题时提出的建议的? 在 body 元素上绑定代理不是好习惯。 【参考方案1】:

稍后在您的 javascript 中,与委托绑定。

$(document).ready(function()
    $('#grid_content').on('click', '.bucket', function()
        ...whatever logic you need...
    );
);

这将在 grid_content 部分内具有“bucket”类的任何 div 上运行。

对于这将做什么似乎有些混乱。声明说,如果对 div1 执行操作,它应该只影响 div1,对于 div2 和 div3 也是如此。

这就是事件的运作方式。如果单击 div1,它将生成一个单击事件并冒泡到父级#grid_content。使用上面的委托,它将检查......这是一个点击事件吗?是的!它是由具有类桶的元素创建的吗?是的!然后我需要对它应用这个函数。

此时,在函数中使用 $(this) 将允许您引用被点击的 div 的各个 dom 元素。

【讨论】:

但是所有部门都不同,希望 JavaScript 函数单独工作。

以上是关于如何为所有动态生成的 div 添加常用的 Javascript 函数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何为 JavaScript 生成的所有 div 放置一个 EventListener

jquery 如何为动态添加的元素添加样式

如何为动态生成的输入文件添加“多个”属性?

如何为动态生成的<a>标签添加事件 ,只有点击时触发?

如何为使用 Rotativa 生成动态内容的 PDF 生成页脚

如何为动态生成 Select 语句的 30 列表创建索引