[問題] 如何整合JQ裡面的程式碼(附P幣)

作者: sunbear928 (是熊耶)   2018-12-19 10:11:41
我舉個例子 例如:
$(".title1").click(function(){$(".data1").show().siblings().hide();});
$(".title2").click(function(){$(".data2").show().siblings().hide();});
$(".title3").click(function(){$(".data3").show().siblings().hide();});
$(".title4").click(function(){$(".data4").show().siblings().hide();});
.
.
.
等等
當點title1區塊的時候 data1的區塊內容會顯示
因為title1跟data1的class差的有點遠 所以沒辦法像data11一樣可以控制鄰近的元素
寫久了會覺得很長一段 想詢問一下 像這樣是否能夠縮短程式碼呢?
我自己想到的方式是
當點擊.title+"i"的 元素時 對應到.data+"i"的元素會有效果
但是用for迴圈又怪怪的 ...反正就卡在這
請求高手幫解
附上P幣 888 做為報酬
作者: Nonsense8 (胡說)   2018-12-19 10:38:00
我記得用迴圈是可以的,或是html添上data-target=data1,class=‘allTitle title1’. 然後click(.allTitle)來觸發如果title1沒有寫style,那就刪掉
作者: ian90911 (xopowo)   2018-12-19 13:54:00
把title要控制的data css class放在title的data-*屬性然後用jq的on 加上title class去寫click事件處理這樣title class只要一個 dataN就等click觸發時再取出
作者: jherk   2018-12-19 13:59:00
Array.prototype.map.call(document.querySelectorAll(‘button’), (el, index)=>{el.addEventListener(‘click’, ()=>{$(‘button’)[index].hide()})})
作者: InfinityGate (小鳥)   2018-12-19 14:05:00
event delegation
作者: hooy2013 (gogo)   2018-12-19 14:27:00
作者: PretenderY   2018-12-19 23:24:00
https://api.jquery.com/index/看Examples的第一個範例.直接用.index()去取得title的Index即可.

Links booklink

Contact Us: admin [ a t ] ucptt.com