0

つまり、私がやろうとしているのは、特定の要素のクリックイベント、つまり (.beanHolder ul li) スコア (.score) から減算してから、変数を宣言したい (clicked = "yes") ことです。ユーザーがその項目をもう一度クリックすると、コードの 2 番目の部分が処理されます。.beans ごとに var を宣言するのは長い方法であり (これは少なくとも 40 個の変数になります)、コードがかなり長くなる可能性があることを私は知っています。私の思考プロセスは、「this」を使用して変数を Bean に追加できるということですが、実際にはうまくいきません。どんな考えでも素晴らしいでしょう!!!

私のjQueryコード - >

<script>
$(document).ready(function(){
var clicked = "";
$(".beanHolder ul li").click(function(){

    if (this.clicked == "")
    {
        $(".bean", this).attr("src", "img/bean.png");
        var number = parseInt($('#score').text());
        number-=1;
        $('#score').text(number);
        this.clicked = "yes";
        return;
    }
    else if (this.clicked == "yes")
    {
        $(".bean", this).attr("src", "img/beanG.png");
        var number = parseInt($('#score').text());
        number+=1;
        $('#score').text(number);
        this.clicked = "";
        return; 
    }
}); 
});
</script>

編集:動作しました。誰かが似たようなものを探しているなら、これはうまくいくでしょう - >

<script>
$(document).ready(function(){

$(".beanHolder ul li").click(function(){
    //$(this).data("clicked","no");
    var clicked = $(this).data("clicked");

    if (clicked)
    {
        $(".bean", this).attr("src", "img/beanG.png");
        var number = parseInt($('#score').text());
        number+=1;
        $('#score').text(number);
        $(this).data("clicked",false);
        //var clicked = $(this).data("clicked");
        //return;
    }
    else
    {       
//This is to keep the score from going below 0; as it is it can not go over a score of 20.
        if (parseInt($('#score').text()) > -1) 
        {
            $(".bean", this).attr("src", "img/bean.png");
            var number = parseInt($('#score').text());
            number-=1;
            $('#score').text(number);
            $(this).data("clicked",true);
            //return;
        }
    }
}); 
});
</script>
4

2 に答える 2

3

.data()を使用して、任意のデータを DOM 要素に添付できます。

$(this).data("clicked","yes");

そして、後でそれを取得することができます:

var clicked = $(this).data("clicked");

したがって、すべてをまとめると、次のようなことができます。

$(".beanHolder ul li").click(function(){
    var clicked = $(this).data("clicked");
    if (clicked) {
        // this element has been clicked
        $(this).data("clicked",false);    // I'd much rather use bools than "yes"/"no"
    }
    else {
        // clicked hasn't been clicked
        $(this).data("clicked",true);    
    }
于 2013-03-29T16:57:31.947 に答える
0

次のように属性を設定できます。

<script>
$(document).ready(function(){

$(".beanHolder ul li").click(function(){
    var clicked = $( this ).attr( 'clicked' );
    if (clicked == "")
    {
       ...
    }
    else if (this.clicked == "yes")
    {
      ...
    }
}); 
});
</script>
于 2013-03-29T16:58:54.503 に答える