Jquery Click не работает после того, как панель становится видимой

0

У меня есть панель изображений после текстового поля. При загрузке страницы панель невидима.

После выбора значения в выпадающем списке панель станет видимой.

Изображение JQuery не работает после того, как панель становится видимой.

Я использую UpdatePanel для выпадающего списка postback, будет ли это причиной?

Если нет, как это исправить?

 <tr>
      <td colspan="2" class="invisible">
         <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
             <ContentTemplate>
                 <asp:Panel runat="server" ID="pnlMonitor" Width="100%" Visible="false" CssClass="panelstyle" >
                   <table style="width: 100%">
                      <tr>
                         <td>Periodic Review Admin:<span style="color: red">*</span>
                          </td>
                          <td>
                          <asp:TextBox runat="server" ID="txtPeriodicReviewAdmin" CssClass="text ui-widget-content ui-corner-all" MaxLength="50"></asp:TextBox>
                      <img src="../Images/Binoculars.png" id="imgPRAdmin" />
                          </td>
                        </tr>
                      </table>
                    </asp:Panel>
                 </ContentTemplate>
               <Triggers>
                 <asp:AsyncPostBackTrigger ControlID="ddlMonitor" EventName="SelectedIndexChanged" />
                </Triggers>
           </asp:UpdatePanel>
       </td>
    </tr>


 $("#imgPRAdmin").click(function (e) {              
      $("#divSearch").dialog({
          open: function () {
              $(this).closest(".ui-dialog")
              .find(".ui-dialog-titlebar-close")
              .removeClass("ui-dialog-titlebar-close");
          },
          title: "Search Employee",
          show: "fade",
          modal: true,
          width: '55%',
          height: 500
      });
  });
  • 0
    Как вы подписываетесь на клик по картинке? Через клик или через Live? для UpdatePanel вы должны использовать метод Live
  • 0
    нам действительно нужен код, чтобы увидеть, что происходит?
Показать ещё 1 комментарий

2 ответа

0

Вам нужно использовать делегирование. Измените это -

$("#imgPRAdmin").click(function (e) {        

к этому -

$("body").on('click', '#imgPRAdmin', function (e) {    

Это объясняет событие, порождающее дерево DOM.

0

UpdatePanel заменит элементы DOM, поэтому click() будет подписаться только на исходный элемент DOM. Когда UpdatePanel обновляет собственный контент с помощью новых элементов, он заменяет элементы DOM, и у них не будет подписки на подписку.

Вы должны использовать on функции. В предыдущей версии jQuery это было live, но потом оно устарело

 $("body").on('click', "#imgPRAdmin", function (e) {              
      $("#divSearch").dialog({
          open: function () {
              $(this).closest(".ui-dialog")
              .find(".ui-dialog-titlebar-close")
              .removeClass("ui-dialog-titlebar-close");
          },
          title: "Search Employee",
          show: "fade",
          modal: true,
          width: '55%',
          height: 500
      });
  });

Ещё вопросы

Сообщество Overcoder
Наверх
Меню