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(" $(document).delegate('.iframeC', 'click', function (e) {
                $.colorbox({ iframe: true, width: '660px', height: '416px', href: this.href });
                return false;
            });");
于 2014-06-12T12:07:49.847 に答える