对动态加载的内容使用.on()时,是否可以从元素中获取属性
Is it possible to get an attribute from an element when using .on() for dynamically loaded content?
在我为某人构建的网站上,我让大多数内部链接使用pushState
,因为这是一种更快的用户体验。我在从动态加载的锚<a>
元素获取href
属性时遇到问题。人们总是告诉我使用.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没有更改。
基本上,我的问题是如何从on
事件的第二个参数中的元素获得href
属性
此代码适用于我: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+。您可以在此处阅读更多关于.on
与.delegate
的信息http://api.jquery.com/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+
相关文章:
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 用于检查数组中是否存在元素的javascript自定义方法
- 如何检查元素的内容是否为空,如果为空,请在jquery中删除该元素
- 如何知道元素在屏幕上是否可见.如果没有,请滚动页面
- 是否有任何可能的原因使我应该指定类型=“”;按钮“;用于我的按钮元素
- javascript数组元素是否知道其封闭数组
- 是否同步加载了LINK元素
- 如何查明鼠标按下事件是否发生在滚动条上或元素中的其他任何位置
- 如何检查元素是否在iframe中
- 使用js/jQuery检查对象(而不是元素)是否真的存在
- 浏览器是否持久缓存脚本元素的编译版本
- 检查元素是否将状态从隐藏更改为可见
- CSS3:当页面向下滚动到第一个视口时,是否可以在元素上触发转换
- 是否可以在第n个元素处重复启动ng
- 如果侦听器附加到父元素,是否可以区分单击发生在哪个子元素上
- 我如何为列出的选项卡元素编写一个Protractor测试,它会检查它是否's是否处于活动状态
- 是否可以在尚未附加到DOM的元素中创建一个sparkline(使用jquery.sparkline插件)
- 是否可以使用flexbox显示模型设置元素的滚动位置
- 确定元素是否存在