Colorbox在第二次点击时工作

时间:2013-07-05 04:36:21

标签: c# jquery repeater colorbox

我正在通过转发器创建动态链接,并在 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}); });");

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

任何形式的帮助都是赞赏的。在此先感谢。

3 个答案:

答案 0 :(得分: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使你的彩盒在关闭时

答案 1 :(得分: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}); });");

答案 2 :(得分:0)

替换为此行。

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