Я пытаюсь добиться чего-то внутри функции, чтобы фактически получить доступ к родительскому селектору.
Вот небольшой фрагмент моего HTML-кода:
<div class="module-row module-tab pull-right" id="modtab-sql_net">
<img src="images/icons/icon-orangebox-plus.png" class="modtab-toggle">
</div>
<div id="tab-module-row-1">
</div>
<div class="module-row module-tab pull-right" id="modtab-sql_dss">
<img src="images/icons/icon-orangebox-plus.png" class="modtab-toggle">
</div>
<div id="tab-module-row-2">
</div>
Вот сценарий jQuery, который я пробовал:
$('div[id^="modtab-"]').click(function(){
$(this).next('div[id^="tab-module-row"]').toggle(function(){
$(this).next('.modtab-toggle').toggle_switch.attr("src").replace("plus", "minus");
// The above line is incorrect. I need to change img attr for the class which is inside the div being clicked
});
});
Теперь я хочу изменить значок изображения с "плюс" на "минус" (имена файлов хранятся в таком виде).
Мне нужно изменить $(this).next('.modtab-toggle')
в коде на что-то, что может работать.
Пожалуйста, НЕ предлагайте просто получить доступ к классу с помощью $('.modtab-toggle')
поскольку у меня есть несколько таких тегов div
в коде. Так не получится.
Спасибо за любую помощь.
попробуй что-нибудь вроде этого
$('div[id^="modtab-"]').click(function(){
var $this = $(this);// clicked div
$this.next('.tab-module-row').toggle(function(){
$this.find('.modtab-toggle').toggle_switch.attr("src").replace("plus", "minus");
});
});
Примечание: вы должны использовать class
вместо id
потому что он должен быть уникальным
#tab-module-row
→ .tab-module-row
ОТДЕЛЬНЫЙ ОТВЕТ
$('div[id^="modtab-"]').click(function(){
var $this = $(this);// clicked div
$this.next('div[id^="tab-module-row"]').toggle(function(){
var img = $this.find('.modtab-toggle'); // your image object
// your condition to check which image to display will goes here.
});
});
Попробуй это:
$('div[id^="modtab-"]').click(function(){
$(this).find('.modtab-toggle').attr("src", function(i, attr){
var o = this.src.indexOf('plus') > -1 ? this.src.replace('plus', 'minus') : this.src.replace('minus', 'plus');
return o;
});
});
измените $(this).next('.modtab-toggle')
на $(this).find('.modtab-toggle')
чтобы заставить его работать.
find()
не будет работать. У меня есть несколько div
с одинаковыми изображениями классов. Мне нужно активировать только на этом конкретном изображении.
.next("#tab-module-row")
когда логически может быть только одна#tab-module-row
?