[英]Dynamically determine which button of a particular class has been clicked with jquery
我的困境的演示在這里
假設我有以下 html:
<html>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
<body>
<div class="main" id="thingSection">
<h1>
Test Header
</h1>
<button class="btn-icon"><i class="fa fa-fw fa-lg fa-windows"></i> <i class="fa fa-fw fa-lg fa-toggle-off"></i> <i class="fa fa-fw fa-lg fa-apple"></i></button>
<div class="content" id="content1">
Some content
</div>
</div>
<hr />
<div class="main" id="thingSection1">
<h1>
Another Test
</h1>
<button class="btn-icon"><i class="fa fa-fw fa-lg fa-windows"></i> <i class="fa fa-fw fa-lg fa-toggle-off"></i> <i class="fa fa-fw fa-lg fa-apple"></i></button>
<div class="content" id="content2">
Some content
</div>
</div>
<hr>
<div class="main" id="thingSection2">
<h1>
Another test, you say?
</h1>
<button class="btn-icon"><i class="fa fa-fw fa-lg fa-windows"></i> <i class="fa fa-fw fa-lg fa-toggle-off"></i> <i class="fa fa-fw fa-lg fa-apple"></i></button>
<div class="content" id="content3">
Some content
</div>
</div>
</body>
</html>
我正在使用以下 jquery 將toggle
圖標從 FontAwesome 從關閉更改為開啟:
$(function() {
$('.btn-icon').click(function() {
if ($(this).find($(".fa")).hasClass('fa-toggle-off')) {
$("i.fa-toggle-off").toggleClass('fa-toggle-on');
} else {
$("i.fa-toggle-on").toggleClass('fa-toggle-off');
}
});
});
當我單擊按鈕切換圖標時,它按預期工作,即它更改了頁面上的所有按鈕。 但是,我想動態確定按下了哪個按鈕,然后根據開關的位置更改子div
的內容。
我想避免為每個按鈕硬編碼 id,以避免腳本中的大量if/else
語句必須在每次我添加新按鈕或新部分時更新。 也就是說,我想動態檢測哪個按鈕被按下,並且只影響那個按鈕和它的孩子。
我注意到console.log(this)
只生成被按下的特定按鈕的 HTML,而不是所有按鈕。
我是 jquery 的新手。 我一直沒能找到解決這個問題呢,我覺得必須有一個辦法做到這一點動態沒有硬編碼標識。
編輯:我已經(部分)完成了我想要用以下代碼做的事情:
$(function() {
$('.btn-icon').click(function() {
var t = $(this).find('.is-toggle');
if (t.hasClass('fa-toggle-off')) {
t.addClass('fa-toggle-on');
t.removeClass('fa-toggle-off');
}
else {
t.addClass('fa-toggle-off');
t.removeClass('fa-toggle-on');
}
});
});
看起來我只是不明白$(this)
到底是什么 (:
您只需要$(this)
來選擇觸發事件的元素。 從那里你可以選擇你想要的 div。
編輯:這是代碼中的樣子,我從你的小提琴中取出並編輯它
$(function() {
$('.btn-icon').click(function() {
$(this).children('.fa-toggle-off, .fa-toggle-on').toggleClass('fa-toggle-on fa-toggle-off');
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.