2

最初の属性によってグループ化された要素の2番目の属性を使用してアラートを表示するにはどうすればよいですか?例:

<a href="#b" attA=1 attB=18 >Here</a>
<a href="#b" attA=1 attB=27>Here</a>
<a href="#b" attA=1 attB=31>Here</a>
<a href="#b" attA=2 attB=84>Here</a>

attAリンクのいずれかをクリックすると、次のように表示されます。

alert("atta=1 and attB=18,27,31");

そしてattBをクリックします:

alert("atta=2 and attB=84");

大変ですね。

4

3 に答える 3

2

attAは有効な属性ではありません。data-*代わりに属性を使用できます。また、値を引用符で囲む必要があることに注意してください。

<a href="#b" data-atta='1' data-attb='18'>Here</a>
<a href="#b" data-atta='1' data-attb='27'>Here</a>
<a href="#b" data-atta='1' data-attb='31'>Here</a>
<a href="#b" data-atta='2' data-attb='84'>Here</a>

$('a').click(function() {
    var a = this.dataset.atta;
    var b = $('a[data-atta='+a+']').map(function() {
        return this.dataset.attb
    }).get().join();
    alert('atta: ' + a + ", attb=" + b)
})​

http://jsfiddle.net/XrF4p/

于 2012-10-09T00:10:59.730 に答える
1
$('a').click(function() {
    var attA = $(this).attr('attA'),
        attB = $.map($('a'), function(link){
            if($(link).attr('attA') == attA) {
                return $(link).attr('attB');
            }
        });

    alert('atta=' + attA + ' and attB=' + attB.join(','));
});

デモ

于 2012-10-09T00:07:54.777 に答える
1

フィドルをチェック

$(function() {
    $('a').on('click', function(e) {
        e.preventDefault();
        var $attA = $(this).attr('attA');
        var $attB = $('a[attA="'+ $attA +'"]');
        var arr = [];
        $.each($attB, function(){

             arr.push( $(this).attr('attB'));
        });
        alert('attA - ' + $attA + ' :: attB - '+ arr.join());        
    });
});​
于 2012-10-09T00:19:06.007 に答える