2013-05-01 87 views
1

希望有人能幫助我的下一個挑戰。下面的腳本與我的HTML一起工作,當我點擊一個擴展的頭部時,它會打開和關閉。我也有一個被調用的alert函數,它顯示擴展頭的文本。這工作。鏈接(擴展器)被點擊後只執行一次警報

我想要做的是讓警報只能顯示一次,任何後續點擊已經點擊的擴展器標題將停止顯示警報。

下面是我從我的工作jQuery代碼...

somesite.ca = { 
     init: function() { 
    $('.qa-set') 
     .find('.answer') 
      .addClass('hide') 
      .end() 
     .find('h3') 
      .addClass('collapsed') 
      .bind('click', this.click); 
    $('#expand').bind('click', this.expandAll); 
    $('#collapse').bind('click', this.collapseAll); 
}, 

click: function(){ 
    $(this) 
     .toggleClass('collapsed') 
     .parent() 
      .find('.answer') 
       .slideToggle('fast'); 
       // Once the expander has been clicked execute alert only once for that particular expander header 
       alert($(this).text()); 

}, 


} 

希望這是有道理的。非常感謝!

回答

1

alert()包裝在檢查變量是否設置的if語句中。

var expander_clicked = false; 

click: function(){ 
$(this) 
    .toggleClass('collapsed') 
    .parent() 
     .find('.answer') 
      .slideToggle('fast'); 
    if (!expander_clicked) { // only alert if expander wasn't previously clicked 
     alert($(this).text()); 
     expander_clicked = true; 
    } 
}, 
+0

謝謝!這效果很好! 一個小問題是,一旦點擊了其中一個擴展器,此代碼將禁用所有擴展器的警報。這可能會清楚地說明我想要做的事情(對不起,如果缺乏適當的解釋): 頁面上有5個擴展器。 用戶點擊擴展器1(警報點火),然後點擊擴展器3(警報點火),用戶點擊擴展器4(警報點火),再次點擊擴展器1(無警報),然後再次點擊擴展器3(無警報)。 所以警報是特定於擴展器的。希望這個更清楚,我沒有浪費你的時間。你寫的作品完美,太完美了:) – user2330142 2013-05-01 23:05:43

+0

看來,如果我添加this.expander_clicked它似乎工作。 $(本) .toggleClass( '崩潰') .parent() .find( '答案 ') .slideToggle(' 快'); (!this.expander_clicked){alert($(this).text()); this.expander_clicked = true; } }, 任何人都可以看到我有這種結構的潛在問題嗎? 再次感謝!真棒社區... – user2330142 2013-05-01 23:11:48

相關問題