#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. Я обновил свой пост, чтобы его было легче понять, чтобы ответить на него. Любая помощь? Спасибо!