Раздел в ColorBox не загружается дважды с JS 1.10.2

Наш сайт обновляет свой jquery до версии 1.10.2, и, поскольку мы ранее использовали colorbox, это создает несколько проблем. Прежде всего, проблема, которую я вижу, заключается в том, что когда пользователь щелкает ссылку, чтобы открыть цветовую панель с намерением загрузить раздел, она работает нормально в первый раз, но во второй раз цветная панель отображает только белую страницу. Я занимался отладкой, но не вижу разницы между какими-либо настройками при первом запуске и при втором. Если страница перезагружается, окно снова откроется в обычном режиме в первый раз, а во второй раз с ошибкой.

Вот кнопка, которая вызывает окно colorbox:

   $('#btn_Detail').click(function (e) {
       $('#div_Detail input:text').val('');
       $('#div_Detail input:radio:checked').removeAttr('checked');
       $('#div_Detail select').val('');
       $('#div_Detail textarea').val('');

       if ($('#hid_ID').val() != '') {
             $.colorbox({ href: '#div_Detail', width: '650px', height: '300px', inline: true });
       }
   }

И вот подразделение, которое он открывает:

   <div id="div_Detail">
    <div>
    <ul>
        <li>
            <label>Type<span class="req">*</span></label>
            <asp:DropDownList ID="ddl_Detail_Type" runat="server" />
        </li>
        <li>
            <label>ID<span class="req">*</span><em>(Make,Model,Serial #, Vin #,Building #)</em></label>
            <asp:TextBox ID="txt_Detail_Id" runat="server" style="overflow:visible;" />
        </li>
        <li>
            <label>Description:<span class="req">*</span></label>
            <asp:TextBox TextMode="MultiLine" Rows="2" ID="txt_Detail_Desc" Width="300px" runat="server" />
        </li>
        <li>
            <label>Damage:<span class="req">*</span></label>
            <asp:DropDownList ID="ddlDamage" runat="server"></asp:DropDownList>
        </li>
        <li>
            <label>Owning Property</label>
            <input type="text" id="txt_OwnMaterial" name="txt_OwnMaterial" style="overflow:visible;" />
            <a id="a_OwnMaterial" href="#"><img alt="" src="/images/TinyButton.gif" /></a>
            <input type="hidden" id="hid_ActOwnMaterialID" name="txt_ActOwnMaterial" />
        </li>
        <li>
            <label>Owned By<span class="req">*</span></label>
            <asp:DropDownList ID="ddl_Detail_OwnBy" runat="server" />
        </li>
    </ul>
    <asp:Button ID="btn_AddUpdate" runat="server" CssClass="yes_btn cancel" Text="Add"  />
    </div>

В сам скрипт colorbox были внесены некоторые дополнительные изменения, чтобы сделать его совместимым с jquery 1.10.2. В частности, изменение строк $.event.trigger() внутри скрипта вместе с парой других мелких вещей. Может ли кто-нибудь дать мне некоторое представление о том, как я могу решить эту проблему, чтобы найти проблему?

Существует возможная теория о том, что цветовое поле удаляет разделение со страницы при первом запуске, и поэтому, когда пользователь переходит к нему во второй раз, оно больше не существует. Он где-то в памяти, можно ли его оттуда достать?


person Elaine K    schedule 25.10.2013    source источник


Ответы (1)


С некоторой помощью ответ был найден, и он связан с функцией триггера внутри сценария ColorBox. В старом скрипте ColorBox вызов event.trigger устарел, поэтому скрипт пришлось изменить, чтобы он вызывал именно те элементы, которым нужен триггер. Это один из них, поэтому для решения этой проблемы мы добавили следующую строку в функцию триггера в файле colorbox.js:

$('[id*=cbox]', $div).add($div).trigger(event);

person Elaine K    schedule 28.10.2013