jquery показывает многослойные divs

#jquery

#jquery

Вопрос:

Мне интересно, как я могу показать несколько разделов после того, как пользователь нажмет на ссылку imaging «importantImg» ниже, используя jquery (importantImg не указан ниже, но есть в моей программе). Проблема в том, что это всего лишь один фрагмент всей страницы, на котором также есть divs, поэтому я не хочу, чтобы мой выбор был «div», я просто хочу взаимодействовать с этими 4 конкретными divs. Вот HTML, который содержит 5 разделов:

 <div id="divLayer1">
<div id="divLayer2" class="alertPod">
    <img src="<%= Page.ResolveUrl("~/{0}/_res/_images/icon_alertMessage.png",   PBS.Cms.Settings.PBSFolderName) %>" />

</div>

<div id = "divLayer3" class="msgPod">
    <div id= "divLayer4" class="messageWrapper">
        <h6>IMPORTANT ANNOUNCEMENT</h6>
        <div class="box">         
            <div id="divLayer5" class="viewport" style="overflow: auto; height: 48px;"  runat="server">
                <p> <%--id= "importantMessage">--%> 
                <asp:Literal ID="ltimportantannouncementTitle" runat="server"></asp:Literal>
                <br />
                <asp:Literal ID="ltimportantannouncementSummary" runat="server"></asp:Literal>
                </p>
            </div>
        </div>
    </div>
    <a href="#" ><img id="alertCloseBtn" src="<%= Page.ResolveUrl("~/           {0}/_res/_images/button_alertMsgClose.png", PBS.Cms.Settings.PBSFolderName) %>" /></a> 
  

Вот скрипт jquery, который я использую, который не работает:

 <script type="text/javascript">
    $(document).ready(function () {
        $("img#importantImg").click(function () {                
            $("#divLayer1").show(); 
            $("#divLayer2").show(); 
            $("#divLayer3").show();
            $("#divLayer4").show();
            $("#divLayer5").show();                                                
            $("#importantImg").attr("src", "<%=  Page.ResolveUrl("~/{0}/_res/_images/icon_alertMessage.png", PBS.Cms.Settings.PBSFolderName) %>");                               
        });
    });

</script>
  

Комментарии:

1. Обычно намного лучше (для вас и для нас) показывать отрисованный код, то есть то, что браузер видит после заполнения переменных на стороне сервера. Часто невозможно отладить иначе.

2. Спасибо, что дали мне знать. Я обновил свой пост, чтобы включить то, что вы сказали о коде, который браузер видит после заполнения переменных на стороне сервера.

Ответ №1:

Здесь две вещи:

1) Вам не нужно создавать $ (document).ready() для каждой имеющейся у вас функции. Вы можете сделать это один раз, а затем поместить все внутрь этого.

2) Ваш пример немного сложный, поскольку это вопрос jQuery, и в нем есть ASP-код. Вот моя интерпретация того, что вы пытаетесь сделать:

Javascript: $(документ).готово(функция() { $(‘#show_message’).click(функция() { $(‘.message’).html(‘Это важное сообщение!’); $(‘.alert_pod’).show(); });

         $('#hide_message').click(function() {
           $('.alert_pod').hide();
       });
    });
  

HTML:

Показать сообщение

Важное сообщение здесь
Скрыть сообщение

Я не знаю ASP (или что бы вы ни использовали), но я подозреваю, что проблема в том, что некоторые из ваших элементов, похоже, не имеют идентификаторов. Вы вызываете их в Javascript, но JS не может найти элементы, потому что, насколько я могу судить, нет id =»importantImg».

Надеюсь, это поможет.

Комментарии:

1. Я добавил идентификаторы для каждого элемента, поскольку вы были правы в том, что у меня не было идентификаторов для некоторых элементов. У меня все еще была та же проблема с текстом в окне headerAlertMessage, который не отображался, и только пустой черный ящик.

2. У меня есть элемент изображения, который я хочу показать в дополнение к тексту. Будет ли html () по-прежнему работать для этого?

3. Я обновил свой пост, чтобы его было легче понять, чтобы ответить на него. Любая помощь? Спасибо!