У меня есть ItemTemplate, где я использую SlideToggle для отображения/скрытия содержимого. Я хочу изменить изображение (стрелка вверх/вниз) в режиме SlideToggle. Пожалуйста, ознакомьтесь с приведенным ниже кодом. По какой-то причине, когда я использую метод replace, изображение не изменяется, и функция SlideToggle также не работает. Может ли кто-нибудь предложить правильный способ сделать это.
<ItemTemplate>
<div class="memData">
<div id="blueBar">
<div id="Title"><%# Eval("title") %> </div>
<asp:ImageButton style="margin-left:420px;" ID="ImageButton1" width="60" Height="60" ImageUrl="~/Content/images/down_arrow_white.png" runat="server" />
</div>
<div id="Description" style="display:none;" >
<p> <%# Item.Description %></p>
</div>
</div>
</ItemTemplate>
Вот jQuery, который я использую:
<script type="text/javascript">
$(document).ready(function () {
$('[id*="blueBar"]').click(function () {
$(this).next().slideToggle("slow");
var down = $("#ImageButton1").attr('src') == "~/Content/images/down_arrow_white.png"
$("#ImageButton1").attr(
'src',
$("#ImageButton1").attr('src').replace(down ? 'down_arrow_white' : 'up_arrow_white', down ? 'up_arrow_white' : 'down_arrow_white')
);
});
});
Измените часть jQuery, как показано ниже, так как ваш ImageButton1 получит динамический ID
когда страница будет отображаться ASP.net
.
<script type="text/javascript">
$(document).ready(function () {
$('[id*="blueBar"]').click(function () {
$(this).next().slideToggle("slow");
//findng the image button id from the repeater row
var imageButtonID = $(this).child().find('[id$=ImageButton1]').attr('id');
var down = $("#" + imageButtonID).attr('src') == "~/Content/images/down_arrow_white.png";
$("#" + imageButtonID).attr(
'src',
$("#" + imageButtonID).attr('src').replace(down ? 'down_arrow_white' : 'up_arrow_white', down ? 'up_arrow_white' : 'down_arrow_white')
);
});
});
<script>
$
.