如何分别触发每个类

Posted

技术标签:

【中文标题】如何分别触发每个类【英文标题】:how to trigger each class separately 【发布时间】:2013-12-06 18:48:48 【问题描述】:

下面是我的 jQuery 幻灯片开关代码。非常简单的代码,但我不能单独触发每个。当我单击一个时,一切都会同时触发。我知道它适用于所有同一个班级,但我不明白我将如何处理它。我有很多这样的div。

HTML

<div class="answerarea">
  <div class="answer"><a class="ans">go</a></div>
  <div class="answertxt"> show this</div>
</div>
<div class="answerarea">
  <div class="answer"><a class="ans">go</a></div>
  <div class="answertxt"> show this</div>
</div>
<div class="answerarea">
  <div class="answer"><a class="ans">go</a></div>
  <div class="answertxt"> show this</div>
</div>
<div class="answerarea">
  <div class="answer"><a class="ans">go</a></div>
  <div class="answertxt"> show this</div>
</div>

CSS

.answerarea 
    float: left;
    width: 350px;
    margin:20px;

.ans 
    padding: 5px;
    background-color: #990;
    -webkit-border-radius: 3px;
    -moz-border-radius: 3px;
    border-radius: 3px;
    cursor:pointer;

.answertxt 
    background-color: #06C;
    display:none;
    color: #FFF;
    padding: 2px;
    float: left;

.answer 
    float: left;

JS

$(document).ready(function()
        $('.ans').click(function (e) 
    e.stopPropagation();
    if($('.answertxt').hasClass('visible')) 
        $('.answertxt').stop().hide('slide', direction: 'left', 500).removeClass('visible');
     else 
        $('.answertxt').stop().show('slide', direction: 'left', 500).addClass('visible');
    
   );
);

演示http://jsfiddle.net/JSkZU/

注意admin/mod 我很抱歉没有正确的主题行。实际上我不明白什么主题适合这个问题。你可以修复。谢谢

【问题讨论】:

【参考方案1】:

尝试使您的选择器更具体,您所拥有的将选择所有这些。

 $('.ans').click(function (e) 
        e.stopPropagation();
        var $this = $(this); //this represent the clicked element
        //Get to the closest/parent and select next and do a toggle and toggleclass on it
        $this.parent().next().stop().toggle('slide', 
            direction: 'left'
        , 500).toggleClass('visible');

    );

Demo

.toggle() 将切换元素的当前状态,.toggleClass 将根据其缺席​​/存在添加/删除类。

为了折叠其他的,你可以这样做:

$(document).ready(function () 
    $('.ans').click(function (e) 
        e.stopPropagation(); //did you mean e.preventDefault();
        var $this = $(this), $answerTxt = $this.closest('.answer').next();
        $answerTxt.add($('.answertxt.visible')).stop().toggle('slide', 
            direction: 'left'
        , 500).toggleClass('visible');
    );
);

Demo

【讨论】:

非常感谢。有用。如果一个打开然后另一个将关闭,怎么可能。我的意思是当我下一个时,另一个将关闭 是的,是的,是的>.......................... 完美:) 非常感谢您的超快速响应: )

以上是关于如何分别触发每个类的主要内容,如果未能解决你的问题,请参考以下文章

如何创建触发函数时通过的测试?

在每个新字符上触发 WPF TextBox 绑定?

VB keypress事件中键盘上每个键的KeyAscii值分别是啥?

如何使一个按键分别触发多个事件

C#如何使同步方法等待事件触发?

如何在运行时使用 Oracle 环境中的触发器和/或过程创建外键