1

クラス内のリンクからタイトル属性を取得しようとしていますが、少し問題があります。

<div class="menu">
<a href="#" title="4242" onclick="cselect()">United States</a>
<a href="#" title="4243" onclick="cselect()">Canada</a>
</div>

そして、これが私が試したことです:

function cselect(){
    var countryID = $(this).attr("title");
    location.href = location.href.split("#")[0] + "#" +countryID;
    location.reload();
}

ありがとう!

4

3 に答える 3

3

インライン ハンドラに渡しthisます。

function cselect(obj){
    var countryID = $(obj).attr("title");
    console.log(countryID);
}

<a href="#" title="4242" onclick="cselect(this)">United States</a>
<a href="#" title="4243" onclick="cselect(this)">Canada</a>

デモ: http://jsfiddle.net/yDW3T/

于 2013-10-29T15:42:40.033 に答える
2

クリックした要素を参照する必要があります。1 つの方法はthis、timeJV が提案したように渡すことです。

しかし、別のスクリプト ブロックからイベント ハンドラーを設定し、現在の要素を参照するだけです。次の 2 つのソリューションの両方で、追加のインラインonclick属性は必要ありません。

/* using jQuery */
jQuery( '.menu a' ).on( 'click', function( event ) {
    event.preventDefault();

    var countryID = jQuery( this ).attr( 'title' ); // <-- !!!

    location.href = location.href.split( '#' )[0] + '#' + countryID;
    location.reload();

} );

また

/* using plain JS */
var countryAnchors = document.querySelectorAll( '.menu a' );
for( var anchor in countryAnchors ) {
    anchor.addEventListener( 'click', function( event ) {
        event.preventDefault();

        var countryID = this.getAttribute( 'title' ); // <-- !!!

        location.href = location.href.split( '#' )[0] + '#' + countryID;
        location.reload();

    }, false );
}
/* todo: cross-browser test for compatibility on querySelectorAll() and addEventListener() */
于 2013-10-29T15:48:29.763 に答える
0

次のように簡単です:

function cselect(){
    var countryID = $(this).attr("title");
    window.location.hash = countryID
    location.reload();
}
于 2013-10-29T15:44:16.267 に答える