单击后更改图标(其他图标不变)
Change icon after click (others icons not change)
点击 jQuery 后,我需要通过切换 class 将图标从加号更改为减号
现在我有问题,点击所有 "span" 改变了图标。
// FAQ
$('#content-in > article > div > ul > li > p').hide();
$('#content-in > article > div > ul > li > h3').click(function(e) {
e.preventDefault();
// skrýt všechny spany
var $this = $(this).parent().find('p');
$('#content-in > article > div > ul > li > p').not($this).hide();
// rozjetí textu
$this.toggle("fast", "swing");
// obarvení pozadí + další změny po kliknutí a rozjetí (u ostatních elementů se tato vlastnost neaplikuje)
var tittle = $("#content-in > article > div > ul > li > h3");
$(tittle).toggleClass('activeLol');
$(tittle).not(this).removeClass('activeLol');
var $plus_minus = $('#content-in > article > div > ul > li > h3 > span');
$plus_minus.toggleClass('fa-minus').toggleClass('fa-plus');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<ul class="Accordion mt30">
<li class="Accordion-item">
<h3 class="Accordion-item-title" style="text-align: left;"><span class="fa fa-plus"> </span>1. Pokud je vybrané zboží momentálně ve statusu objednáno u dodavatele či vyprodáno, co to znamená ?</h3>
<p class="Accordion-item-content" style="display: none;">Zboží, které je momentálně ve statusu objednáno u dodavatele, bohužel není k dispozici. Produkty jsou objednány u našeho italského dodavatele s tím, že čekáme na jejich výrobu a následnou dopravu do České republiky. Dodací lhůta je však různě odlišná,
zpravidla 2-3 týdny (v některých případech může být delší).</p>
<p class="Accordion-item-content" style="display: none;">Zboží, které je momentálně ve statusu vyprodáno, je bohužel dlouhodobě nedostupné s tím, že jeho naskladnění zatím nemáme potvrzeno.</p>
</li>
<li class="Accordion-item">
<h3 class="Accordion-item-title"><span class="fa fa-plus"> </span>2. Pokud si objednám zboží, které je momentálně skladem, jaká je dodací lhůta ?</h3>
<p class="Accordion-item-content" style="display: none;">Při objednání produktů, které jsou na našich webových stránkách „Skladem“ je dodací lhůta zpravidla dva až čtyři pracovní dny.</p>
</li>
</ul>
问题是因为您选择了所有 h3 span
元素。相反,您可以使用 DOM 遍历通过在点击事件处理程序中使用 this
关键字来查找与点击的 h3
相关的那个。试试这个:
var $plus_minus = $(this).find('span').toggleClass('fa-minus fa-plus');
$('h3 span').not($plus_minus).removeClass('fa-minus').addClass('fa-plus');
获取被点击元素的相对图标
$('#content-in > article > div > ul > li > h3').click(function(e) {
e.preventDefault();
$('h3 span').not($(this).find('span')).removeClass('fa-minus').addClass('fa-plus');//change all classes to fa-plus
$(this).find('span').toggleClass('fa-minus fa-plus');//change the current one
});
// FAQ
$('ul > li > p').hide();
$(' ul > li > h3').click(function(e) {
e.preventDefault();
// skrýt všechny spany
var $this = $(this).parent().find('p');
$('ul > li > p').not($this).hide();
// rozjetí textu
$this.toggle("fast", "swing");
// obarvení pozadí + další změny po kliknutí a rozjetí (u ostatních elementů se tato vlastnost neaplikuje)
var tittle = $(" ul > li > h3");
$(tittle).toggleClass('activeLol');
$(tittle).not(this).removeClass('activeLol');
var $plus_minus = $(' ul > li > h3 > span');
$('h3 span').not($(this).find('span')).removeClass('fa-minus').addClass('fa-plus'); //change all classes to fa-plus
$(this).find('span').toggleClass('fa-minus fa-plus'); //change the current one
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<ul class="Accordion mt30">
<li class="Accordion-item">
<h3 class="Accordion-item-title" style="text-align: left;"><span class="fa fa-plus"> </span>1. Pokud je vybrané zboží momentálně ve statusu objednáno u dodavatele či vyprodáno, co to znamená ?</h3>
<p class="Accordion-item-content" style="display: none;">Zboží, které je momentálně ve statusu objednáno u dodavatele, bohužel není k dispozici. Produkty jsou objednány u našeho italského dodavatele s tím, že čekáme na jejich výrobu a následnou dopravu do České republiky. Dodací lhůta je však různě odlišná,
zpravidla 2-3 týdny (v některých případech může být delší).</p>
<p class="Accordion-item-content" style="display: none;">Zboží, které je momentálně ve statusu vyprodáno, je bohužel dlouhodobě nedostupné s tím, že jeho naskladnění zatím nemáme potvrzeno.</p>
</li>
<li class="Accordion-item">
<h3 class="Accordion-item-title"><span class="fa fa-plus"> </span>2. Pokud si objednám zboží, které je momentálně skladem, jaká je dodací lhůta ?</h3>
<p class="Accordion-item-content" style="display: none;">Při objednání produktů, které jsou na našich webových stránkách „Skladem“ je dodací lhůta zpravidla dva až čtyři pracovní dny.</p>
</li>
</ul>
点击 jQuery 后,我需要通过切换 class 将图标从加号更改为减号 现在我有问题,点击所有 "span" 改变了图标。
// FAQ
$('#content-in > article > div > ul > li > p').hide();
$('#content-in > article > div > ul > li > h3').click(function(e) {
e.preventDefault();
// skrýt všechny spany
var $this = $(this).parent().find('p');
$('#content-in > article > div > ul > li > p').not($this).hide();
// rozjetí textu
$this.toggle("fast", "swing");
// obarvení pozadí + další změny po kliknutí a rozjetí (u ostatních elementů se tato vlastnost neaplikuje)
var tittle = $("#content-in > article > div > ul > li > h3");
$(tittle).toggleClass('activeLol');
$(tittle).not(this).removeClass('activeLol');
var $plus_minus = $('#content-in > article > div > ul > li > h3 > span');
$plus_minus.toggleClass('fa-minus').toggleClass('fa-plus');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<ul class="Accordion mt30">
<li class="Accordion-item">
<h3 class="Accordion-item-title" style="text-align: left;"><span class="fa fa-plus"> </span>1. Pokud je vybrané zboží momentálně ve statusu objednáno u dodavatele či vyprodáno, co to znamená ?</h3>
<p class="Accordion-item-content" style="display: none;">Zboží, které je momentálně ve statusu objednáno u dodavatele, bohužel není k dispozici. Produkty jsou objednány u našeho italského dodavatele s tím, že čekáme na jejich výrobu a následnou dopravu do České republiky. Dodací lhůta je však různě odlišná,
zpravidla 2-3 týdny (v některých případech může být delší).</p>
<p class="Accordion-item-content" style="display: none;">Zboží, které je momentálně ve statusu vyprodáno, je bohužel dlouhodobě nedostupné s tím, že jeho naskladnění zatím nemáme potvrzeno.</p>
</li>
<li class="Accordion-item">
<h3 class="Accordion-item-title"><span class="fa fa-plus"> </span>2. Pokud si objednám zboží, které je momentálně skladem, jaká je dodací lhůta ?</h3>
<p class="Accordion-item-content" style="display: none;">Při objednání produktů, které jsou na našich webových stránkách „Skladem“ je dodací lhůta zpravidla dva až čtyři pracovní dny.</p>
</li>
</ul>
问题是因为您选择了所有 h3 span
元素。相反,您可以使用 DOM 遍历通过在点击事件处理程序中使用 this
关键字来查找与点击的 h3
相关的那个。试试这个:
var $plus_minus = $(this).find('span').toggleClass('fa-minus fa-plus');
$('h3 span').not($plus_minus).removeClass('fa-minus').addClass('fa-plus');
获取被点击元素的相对图标
$('#content-in > article > div > ul > li > h3').click(function(e) {
e.preventDefault();
$('h3 span').not($(this).find('span')).removeClass('fa-minus').addClass('fa-plus');//change all classes to fa-plus
$(this).find('span').toggleClass('fa-minus fa-plus');//change the current one
});
// FAQ
$('ul > li > p').hide();
$(' ul > li > h3').click(function(e) {
e.preventDefault();
// skrýt všechny spany
var $this = $(this).parent().find('p');
$('ul > li > p').not($this).hide();
// rozjetí textu
$this.toggle("fast", "swing");
// obarvení pozadí + další změny po kliknutí a rozjetí (u ostatních elementů se tato vlastnost neaplikuje)
var tittle = $(" ul > li > h3");
$(tittle).toggleClass('activeLol');
$(tittle).not(this).removeClass('activeLol');
var $plus_minus = $(' ul > li > h3 > span');
$('h3 span').not($(this).find('span')).removeClass('fa-minus').addClass('fa-plus'); //change all classes to fa-plus
$(this).find('span').toggleClass('fa-minus fa-plus'); //change the current one
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<ul class="Accordion mt30">
<li class="Accordion-item">
<h3 class="Accordion-item-title" style="text-align: left;"><span class="fa fa-plus"> </span>1. Pokud je vybrané zboží momentálně ve statusu objednáno u dodavatele či vyprodáno, co to znamená ?</h3>
<p class="Accordion-item-content" style="display: none;">Zboží, které je momentálně ve statusu objednáno u dodavatele, bohužel není k dispozici. Produkty jsou objednány u našeho italského dodavatele s tím, že čekáme na jejich výrobu a následnou dopravu do České republiky. Dodací lhůta je však různě odlišná,
zpravidla 2-3 týdny (v některých případech může být delší).</p>
<p class="Accordion-item-content" style="display: none;">Zboží, které je momentálně ve statusu vyprodáno, je bohužel dlouhodobě nedostupné s tím, že jeho naskladnění zatím nemáme potvrzeno.</p>
</li>
<li class="Accordion-item">
<h3 class="Accordion-item-title"><span class="fa fa-plus"> </span>2. Pokud si objednám zboží, které je momentálně skladem, jaká je dodací lhůta ?</h3>
<p class="Accordion-item-content" style="display: none;">Při objednání produktů, které jsou na našich webových stránkách „Skladem“ je dodací lhůta zpravidla dva až čtyři pracovní dny.</p>
</li>
</ul>