1

我正在通过转发器创建动态链接,并在OnPreRender绑定来自服务器的链接。但是颜色框只有在第一次点击后才有效。我正在使用 live 来绑定动态链接。

代码如下:

    protected virtual void BindJQuery()
    {
        string jquery = string.Empty;
        jquery = StoreLocation() + "Scripts/jui/jquery-1.8.0.min.js";
        Page.ClientScript.RegisterClientScriptInclude(jquery, jquery);
    }

    protected virtual void BindColorBox()
    {
        string jquery = null;
        jquery = StoreLocation() + "Scripts/colorbox/jquery.colorbox-min.js";
        Page.ClientScript.RegisterClientScriptInclude(jquery, jquery);
    }

    protected void BindColorBoxC()
    {
        StringBuilder urlScript = new StringBuilder();
        urlScript.AppendLine("<script type=\"text/javascript\">");
        urlScript.AppendLine("$('.iframeC').live('click',function(e){ e.preventDefault(); $(this).colorbox({width: '660px', height: '416px', iframe: true}); });");
        urlScript.AppendLine("</script>");
        string js = urlScript.ToString();
        Page.ClientScript.RegisterClientScriptBlock(GetType(), "colorboxC", js);
    }

    protected override void OnPreRender(EventArgs e)
    {
        BindJQuery()
        BindColorBox();
        BindColorBoxC();
        base.OnPreRender(e);
    }

编辑:

我已经替换了以下行:

urlScript.AppendLine("$('.iframeC').live('click',function(e){ e.preventDefault(); $(this).colorbox({width: '660px', height: '416px', iframe: true}); });");

和:

urlScript.AppendLine("$(document).on('click','.iframeC',function(e){ e.preventDefault(); $(this).colorbox({width: '660px', height: '416px', iframe: true}); });");

但结果是一样的。它仍然无法在第一次点击时工作。并且没有覆盖,因为它是一个新的页面加载。

感谢任何形式的帮助。提前致谢。

4

3 回答 3

0

替换此行

urlScript.AppendLine("$('.iframeC').live('click',function(e){ e.preventDefault(); $(this).colorbox({width: '660px', height: '416px', iframe: true}); });");

然后尝试

urlScript.AppendLine("$(document).on('click','.iframeC',function(e){ e.preventDefault(); $(this).colorbox({width: '660px', height: '416px', iframe: true}); });");
于 2013-07-05T04:38:39.780 回答
0

改变这个

urlScript.AppendLine("$('.iframeC').live('click',function(e){ e.preventDefault(); $(this).colorbox({width: '660px', height: '416px', iframe: true}); });");

对此

urlScript.AppendLine("$('.iframeC').on('click',function(e){ e.preventDefault(); $(this).colorbox({width: '660px', height: '416px', iframe: true}); });");

.live()在 jquery 中已弃用,因此更好地使用.on()它。并确保您以正确的方式关闭您的颜色框。有时如果颜色框未正确关闭,覆盖将禁止您单击任何其他元素。然后在第一次单击覆盖将消失,第二次单击时您可以使用 click.SO 在关闭时确保您的颜色框

于 2013-07-05T04:37:57.343 回答
0

替换为这一行。

urlScript.AppendLine(" $(document).delegate('.iframeC', 'click', function (e) {
                $.colorbox({ iframe: true, width: '660px', height: '416px', href: this.href });
                return false;
            });");
于 2014-06-12T12:07:49.847 回答