2011-12-29 10 views
2

私はIDを変更することはできません、私は名前を変更することはできません、私は2つの異なるクラスの要素をスタイルする必要があります。data()で要素にアクセスしますか?

data()で要素にアクセスできますか?基本的には、どうすればdata-arrow="el"にアクセスできますか?

$(".vote").data("arrow"); 
    $(".vote").click(function() {//here i need a selector that should have a permanent name 

    //some code 
    }); 

<a href="" class="vote" id="<?php echo $id ?>" name="up" data-arrow="el">up</a> 
<a href="" class="vote" id="<?php echo $id ?>" name="down" data-arrow="el">down</a> 

おかげ

答えて

4
$("a.vote[data-arrow='el']").click(function(){ 
    alert("clicked"); 
}); 

Example

これはjQueryのattribute equals selectorです。

voteのすべてのa要素を選択することをお勧めしますか?これと同じように:

$(document).on("click", "a.vote[data-arrow='el']", function(e){ 
    e.preventDefault(); 
    alert("clicked"); 
}); 

Example:また

$("a.vote").click(function(){...}); 

、イベント処理のためのon()を使用することをお勧めします。

1

あなたはクリックハンドラ内から、クリックされた要素のデータにアクセスしようとしている場合、あなたはこのようなことをするでしょう:あなたは、データ - を使用してセレクタを作成しようとしている場合

$(".vote").click(function() { 
    var arrow = $(this).data("arrow"); 
    // do whatever you want with the value of the arrow variable 
}); 

矢印の値は、(Purmouのポストのように)することができますが、まだ別のクラスを追加し、同様にセレクタでそれを使用するために非常にクリーン次のようになります。ただ、これらの要素を選択する

<a href="" class="vote el" id="<?php echo $id ?>" name="up">up</a> 

とjQueryセレクター:

$(".vote.el") 
+1

このようには見えません - 両方のリンクは 'data-arrow'と同じ値を持っています。彼は、data属性を使って要素をクリックすることによって、クリックを要素にアタッチする方法を望んでいます。 – Purag

+0

私はaddClass(s​​omeclass)私は.voteを削除するので、クリックハンドラは動作しなくなります。 – user947462

+0

@ user947462 - '.addClass(" someClass ")'は新しいクラスを追加します。既存のクラスは削除されません。セレクタに '.vote'を入れたくない場合はセレクタから' .vote'を削除し、セレクタとして '$(.el)'を使います。クラスはセレクタでははるかにクリーンで、ブラウザはデータ属性よりもクラスごとに選択するほうがはるかに最適化されています。 – jfriend00

関連する問題