【问题标题】:Looking for specific class when clicked单击时查找特定类
【发布时间】:2012-12-22 01:57:57
【问题描述】:

我有两个 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 的类,反之亦然。

编辑

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

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

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

抱歉,描述太长了。

谢谢!

【问题讨论】:

  • 你有什么作品:jsfiddle.net/RoryMcCrossan/5JyHL。我不明白你的问题?
  • 我不明白这个问题...
  • jsfiddle.net/rK37D 它似乎像你描述的那样工作?
  • 您能否尝试具体说明您想要实现的更多目标?目前,我(以及这​​里的许多其他人)并不完全清楚。
  • @JesperKarsrud 我更新了我的问题,希望能让人们对我想要完成的工作有所了解。感谢您的帮助1

标签: jquery dom element this


【解决方案1】:

我解决了我想做的事情

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

这让我可以检查投票的班级是否存在,但它不会检查按下的 $(this) 是否存在。

【讨论】:

    【解决方案2】:
    $(this).parent().prev().children('.button');
    

    这将为您提供对 jQuery 对象的引用,该对象包含父级的上一个兄弟姐妹的子级,类为 'button'。

    【讨论】:

      【解决方案3】:
      $(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】:

        我不确定你到底想实现什么,但如果你想做的只是在类之间切换,那么你可以使用toggleClass

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

        您始终可以针对特定的类名('vote')进行测试以获取另一个类('voted')。有什么东西可以阻止你使用硬编码的类名吗?

        【讨论】:

        • 我试图找出一个“投票”类,使用类似 .not() 或类似的东西,因为它具有相同的 DOM 树。
        【解决方案5】:

        你可以使用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)
        });
        

        【讨论】:

          【解决方案6】:

          看来你想得到第一个 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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-01-22
            • 2023-04-10
            • 1970-01-01
            • 2023-01-18
            • 1970-01-01
            • 2016-10-11
            • 2019-07-15
            相关资源
            最近更新 更多