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 没有改变。

基本上我的问题是如何从事件href的第二个参数中的元素获取属性on

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+ 您可以在此处阅读有关.onvs的更多信息http://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 回答