0

別の要素にカーソルを合わせると、このコードが下に挿入されるコードがあります。

<div class="star" id="1">
<div class="star" id="2">
<div class="star" id="3">
<div class="star" id="4">
<div class="star" id="5">
</div>
</div>
</div>
</div>
</div>

私がやりたいのは、JavaScript を使用して各 DIV の ID を取得することだけです。

$(document).ready(function() {

$('.star').on(function(e){

    e.stopPropagation();
    var rating = $(this).attr('id');

    alert(rating);
});

});

これを達成するために多くの方法を試しましたが、これは私が試した最新のものですが、まだ運がありません! どんな助けにも感謝します

4

3 に答える 3

1

上記のdivが追加されたときにイベントをトリガーします。

var counter = 0;
$(someelement).on("mouseenter",function(){
    counter++;
    $('<div class="star" id="' + counter + '" />').appendTo(".star:last").trigger("staradded");
})

$(document).on("staradded",".star",function(e) {
    alert(this.id);
});

または、さらに良いことに、イベントをスキップします。

var counter = 0;
$(someelement).on("mouseenter",function(){
    counter++;
    $('<div class="star" id="' + counter + '" />').appendTo(".star:last");
    alert(counter);
})
于 2012-12-22T19:57:56.447 に答える
0

バインドするイベントでwrongはないため、 on の構文があります。tellingクリックなどの必要なイベントをバインドした後、 map 関数を使用して、elementsclass を持つカンマ区切りのすべての ID を取得できますstar

ライブデモ

$(document).on('click', '.star', function(e) {
    e.stopPropagation();
    ids = $('.star').map(function() {
        return this.id;
    }).get().join();
    alert(ids);
});

each を使用して、すべての要素を反復処理する必要があります。

$('.star').each(function(){           
    var rating = $(this).attr('id');    
    alert(rating);
});

​
于 2012-12-22T19:53:59.653 に答える
0

「livequery」プラグインを使用します - https://github.com/brandonaaron/livequery

私が正しく理解していれば、新しい「.star」要素をすべて監視したいので、古い関数「live」のようなものが必要です。

この場合、次のコードのみを使用します。

 $('.star').livequery('click',function(e){});

そこにある簡単な例 - http://jsfiddle.net/WEr5J/11/

于 2012-12-22T20:12:20.770 に答える