2009-01-21 97 views
2

Heres my page.Jquery的單擊事件不觸發/兩個相同的HTML塊

如果您發現紅色的「特別優惠」中,你將看到的是點擊其頭擴張時之間distingishing。頁面底部有另一個相同的框。如果你也點擊那個,你會看到我的問題。點擊事件觸發兩個框。這是一個疏忽。我的問題是,我似乎無法讓我的替代JS工作。我想我可以使用下一個('div')方法(在代碼示例中註釋掉)來定位div並將其展開。這似乎並不奏效。

我的繼承人目前的JS,能同時觸發兩個盒子:

//=====Special Offer Expanders START===== 
     $('a.expand-offer').click(function(event){ 
      event.preventDefault(); 
      //$('a.expand-offer').next('div').slideToggle(200); 
      $('div.offer-expander').slideToggle(200); 
     }); 
//=====Special Offer Expanders END===== 

任何人都可以看到JS兩個重複的盒子之間進行區分的方式,使他們彼此獨立拓展?我考慮在標記中添加'.top'和'.bottom'類,但這很麻煩,因爲我希望能夠以通用的方式使用特殊優惠標記,而無需添加獨特的類。


很抱歉,這是我到目前爲止已經試過:

$(this).next('div.offer-expander').slideToggle(200); 
$(this).next('.offer-expander').slideToggle(200); 
$(this).next('div').slideToggle(200); 

無似乎工作。 (我把它放在註釋中,但它沒有代碼高亮。)

+1

自動播放聲音是邪惡的,由辦法。 – Oli 2009-01-21 11:01:07

+0

是的,你不必告訴我。據營銷團隊說,它已經過A/B測試和驗證。我不相信。 – 2009-01-21 11:16:19

回答

1

你「a.expand要約」是另一個段落元素裏面,所以你需要嘗試去上一級
嘗試:

$(this).parent().next('div.offer-expander').slideToggle(200); 
1

是的。使用$(this)來引用被點擊的元素並像這樣移動......我不確定第三行是如何工作的(因爲我看不到你的源代碼),但我沒有註釋第二行給你一個想法:

$('a.expand-offer').click(function(event){ 
      event.preventDefault(); 
      $(this).next('div').slideToggle(200); 
      //$('div.offer-expander').slideToggle(200); 
    }); 
+0

嗯,我可以看到源代碼(眼睛滑過頂部的鏈接),但同樣應該可以正常工作。你可以使用next('。offer-expander')來代替,但是如果源始終是正確的,那麼它應該沒有關係。 – Oli 2009-01-21 11:04:23