1

2 つの 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)他の要素を取得するために、何らかの関数で次のようなものを使用したいと思います。「投票済み」を取得するにはどうすればよいですか?私がこれを行っている理由は、2 つのボタンの間で変更されるスクリプトがあるためです。そのため、ユーザーが をクリックするとbutton1、 のクラスを取得したいと思いますbutton2。逆もまた同様です。

編集

そのため、(2 人を比較するための) 2 つのボタンがあります。最初は、同じクラスを持っているはずですvote。しかし、ユーザーがボタンをクリックするとクラスが に変わる jQuery コードがありますvotedvotedここで、ユーザーが OTHER ボタンをクリックして (2 番目の人に投票しようとする場合)、クラスが既に存在するか、最初のボタンを既に押したために投票できないことを確認したいと思います。

存在する場合はページ全体をチェックできることはわかっていますvotedが、ユーザーが投票した最初の投票者をクリックすると、投票を取り戻すことができるチェックを設定しました(これにより、div クラスが に戻りますvote)。

私の全体的な前提は、ユーザーがすでに誰かに投票した場合、ユーザーが他の人に投票できないようにすることです。

長い説明で申し訳ありません。

ありがとう!

4

6 に答える 6

1

私がやろうとしていることを解決しました

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

これにより、投票されたクラスが存在するかどうかを確認できますが、押された $(this) クラスが存在するかどうかは確認されません。

于 2013-01-09T07:40:32.770 に答える
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"
        });
    });

このコードは私にとってはうまくいきます。

于 2013-01-08T08:51:09.857 に答える
0
$(this).parent().prev().children('.button');

これにより、クラス「ボタン」を持つ親の前の兄弟の子を含む jQuery オブジェクトへの参照が取得されます。

于 2013-01-08T08:48:58.640 に答える
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)
});
于 2013-01-08T08:49:14.223 に答える
0

正確に何を達成したいのかわかりませんが、やりたいことはクラス間の切り替えだけで、使用できますtoggleClass

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

特定のクラス名 ('vote') に対していつでもテストして、他のクラス ('voted') を取得できます。ハードコーディングされたクラス名を仮定することを妨げるものはありますか?

于 2013-01-08T08:53:21.440 に答える
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"
    });

デモ

于 2013-01-08T08:55:34.653 に答える