2013-05-01 53 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

相关问题