单击时查找特定类

时间:2013-01-08 08:43:59

标签: jquery dom element this

我有两个div容器:

<!-- button1 -->
<div class="voted">
    <span>name</span>
    <div class="button">Vote</div>
</div>

<!-- button2 -->
<div class="vote">
    <span>name</span>
    <div class="button">Vote</div>
</div>

然后使用jquery:

$('.button').click(function(){
    // if button2 was clicked:
    var test = $(this).parent().attr("class"); // How do I obtain the other element?
    alert(test); // this should be outputted "voted"
});

我想使用$(this)之类的函数来获取另一个元素。我如何获得“投票”?我这样做的原因是因为我有一个脚本,它会在两个按钮之间切换,所以当用户点击button1时,我希望他们获得button2的类,反之亦然。 / p>

修改

所以我有两个按钮(比较两个人),最初,他们应该有相同的班级vote。但我有jQuery代码,当用户点击按钮时,该类更改为voted。现在,我想检查一下,当用户点击OTHER按钮(试图为第二个人投票)时,他们不能,因为已经有voted类,或者他们已按下第一个按钮

我知道如果voted存在,我可以检查整个页面,但是当用户点击他们投票的初始投票人时,我已经设置了一些检查,他们可以收回投票(这将是将div类更改回vote)。

我的整个前提是:如果用户已经投票给某人,则不允许用户投票给对方。

很抱歉有很长的描述。

谢谢!

6 个答案:

答案 0 :(得分:1)

我解决了我正在尝试做的事情

var voted = $(".voted").not($(this).parents(".voted")).attr("class");

这允许我检查类投票是否存在,但是它不会检查按下的$(this)是否存在。

答案 1 :(得分:0)

$(this).parent().prev().children('.button');

这会让你引用一个jQuery对象的引用,该对象包含父类的前一个兄弟的子类,其类为“button”。

答案 2 :(得分:0)

您可以使用siblings方法。

$('.button').click(function(){
  var $this = $(this).parent();
  var c1 = $this.prop('class');
  var c2 = $this.siblings('div').prop('class');
  // console.log('class 1: ' + c1 + ', class 2: ' + c2)
});

答案 3 :(得分:0)

$(function(){
        $('.button').click(function () {
            // if button2 was clicked:
            var test = $(this).parent().attr("class"); // How do I obtain the other element?
            alert(test); // this should be outputted "voted"
        });
    });

这段代码对我来说很好。

答案 4 :(得分:0)

我不确定你想要实现什么,但如果你想做的就是在课堂之间切换,那么你可以使用toggleClass

$('.button').click(function(){ 
   $(this).toggleClass('vote').toggleClass('voted'); 
});

您可以随时针对特定的班级名称(“投票”)进行测试,以获得其他班级(“投票”)。是否存在阻止您使用硬编码类名的任何内容?

答案 5 :(得分:0)

看来你想得到第一个div的课程

$('.button').click(function(){
      var test = $('div:first').attr("class"); // this will give first div's class
      alert(test); // this should be outputted "voted"
    });

<强> DEMO