2

私が誰かのために構築しているサイトでpushStateは、ユーザーエクスペリエンスが高速であるため、ほとんどの内部リンクを使用しています。href動的にロードされるアンカー<a>要素から属性を取得する際に問題が発生しました。廃止されたためでは.on()なく、常に使用するように言われますが、このような問題が発生します。.live().live()

これが私のコードです:

$('#artists').on('click', '.artist a', function(e) {
        SM.config.loader.show();
        var href = $(this).attr('href');
        SM.loadContent(href,'artist');
        history.pushState('', 'New URL: ' + href, href);
        e.preventDefault();
});

href(明らかに)返される属性はないので、URLは変更されません。

基本的に私の質問は、イベントの2番目のパラメーターの要素から属性を取得するにはどうすればよいですか?hrefon

4

1 に答える 1

3

このコードは私のために働いています: http://jsfiddle.net/NcZ22/2/

HTML

<div id="artists"></div>​

JS

//Bind an event
$('#artists').on('click', '.artist', function(e) {
        e.preventDefault();    
        var href = $(this).attr('href');
        console.log(href);
});​

//Add the element to the dom
$('<a />', {
    href: 'http://stackoverflow.com',
    text: 'SO',
    class: 'artist'
}).appendTo('#artists');

また、jQuery 1.7 以降を使用していることを確認してください。vs について詳しくは、 http: .on//api.jquery.com/delegate/を.delegateご覧ください

構文の簡単な比較:

$(selector).live(events, data, handler);                // jQuery 1.3+
$(elements).delegate(selector, events, data, handler);  // jQuery 1.4.3+
$(elements).on(events, selector, data, handler);        // jQuery 1.7+
于 2012-07-10T18:07:02.353 に答える