【问题标题】:After dynamically creating html elements, is there anyway to fire an event?动态创建 html 元素后,是否有触发事件?
【发布时间】:2012-07-28 11:20:39
【问题描述】:

这是一个愚蠢的问题,对此深表歉意。

我正在从 ASP.NET 服务器控件动态创建 html 元素。在创建元素或创建所有元素之后,有没有办法强制事件在其中一个上触发?我知道它是从服务器到客户端的,但我正在寻找解决方法。文档中是否有任何内容可以监听正在添加的 html 或任何内容?

我正在创建这样的控件:

protected override void RenderContents(HtmlTextWriter output)
{
    // htmlString is a dynamically built string of html
    output.Write(htmlString);
}

元素是一系列级联的下拉菜单,用户可以在其中保存所选值。因此,如果我在创建项目时选择了项目的值,则无法启动该事件,该事件会调用数据库以获取数据以填充其依赖控件。这里有一个“不回发”规则(不是我的规则)。

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript asp.net html .net-3.5 dynamic-html


    【解决方案1】:

    如果需要,从 RegisterClientScriptBlock() 触发 Function()

    用法示例:

    ClientScript.RegisterClientScriptBlock(GetType(), "sas", "<script> alert('Inserted successfully');</script>", false);

    或者您可以在这些新项目上设置点击等实时事件。

    $(document).on('click', '#exampleThing', function () {
        // what you want to do
    });
    

    【讨论】:

      【解决方案2】:

      您可以将 javascript 作为渲染的一部分输出,并将bind events 输出到动态创建的控件。

      jQuery 让binding events 变得非常简单。

      【讨论】:

      • 那么,您是否建议我将一个方法附加到 window.onload() 以基本上触发这些事件并触发级联?或者你认为有更好的方法吗?谢谢,顺便说一句。很有帮助。
      • @Yatrix - jQuery 惯用的方法是使用 $(document).ready 传入一个将附加到所需元素的函数。
      • 酷 - 在我的客户新手头撞墙几个小时后,这完美地解决了我的问题。再次感谢您的帮助。很多人在给出/接受后根本不支持他们的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-29
      • 1970-01-01
      • 1970-01-01
      • 2012-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多