【问题标题】:loading select2 control from another page giving me troubles从另一个页面加载 select2 控件给我带来了麻烦
【发布时间】:2012-09-08 21:20:07
【问题描述】:

我正在使用以下代码尝试从另一个页面加载一个页面,以便我可以在对话框中显示第二页 html:

 var $link = $('#addTagButton');
        var $dialog = $('#addTag')
                .load($link.attr('href'))
                .dialog({
                    autoOpen: false,
                    title: $link.attr('title'),
                    width: 600
                });
        $link.click(function() {
            $dialog.dialog('open');
            return false;
        });

但是,在第二页加载 select2 控件时,它无法识别 select2 选项,并且基本上不会加载其功能。我在两个页面中都有对 select2.js 的引用,其他一切都运行良好,但在那里。

  1. 有人知道如何解决这个问题吗?
  2. 有没有更好的方法来从另一个页面加载一个页面并让它工作?

谢谢。

【问题讨论】:

    标签: jquery html jquery-select2


    【解决方案1】:

    “从另一个页面加载一个页面”有点令人担忧。

    一般原则如下:

    • .load(...) 应该加载一个有效的 HTML 片段,而不是整个页面
    • 通常,与加载的片段相关联的 javascript 将显示在主机页面(第 1 页)上。如果您知道自己在做什么,您可以加载带有 HTML 片段的脚本块,并且可以执行控制措施来确定脚本是否被执行 - 请参阅“脚本执行”部分here
    • 片段加载后,必须将不冒泡事件的处理程序(例如,选择元素的“onchange”事件)附加到元素
    • 冒泡事件(例如“鼠标悬停”、“点击”)的处理程序通常可以委托给主机页面上的静态容器,以便它们对现有和未来包含的元素进行操作。

    请参阅.on 了解附加事件处理程序的具体细节。

    【讨论】:

    • 从 .load() (api.jquery.com/load) 的文档中,您似乎可以将脚本与 HTML 一起加载(请参阅标有“脚本执行”的部分。
    • 感谢 EZ。我已经编辑了答案中的第二个要点。你觉得我现在说的公平吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    相关资源
    最近更新 更多