如何使用attachListener获取链接的属性
How to get attributes of a link using attachListener?
我尝试过jQuery和JavaScript,但没有一个能够带来链接的属性。这是我使用的代码-这不是在callme
函数的警报
function callMe() {
var ll = this;
var id1 = ll.getAttribute('id');
alert('Inside callMe...'+id1);
}
function load() {
var lnk = new Array();
lnk = document.getElementsByTagName("a");
var len = lnk.length;
for (var i=5;i<len;i++){
var id = lnk[i].getAttribute('data-id');
lnk[i].attachEvent('onclick',callMe);
}
}
我尝试使用以下jQuery也
$("a").click(function(){
alert(this.id);
var shouldTrack = $(this).attr('id');
alert('Inside callMe...'+shouldTrack); });
是否在页面加载完成之前运行此代码?这必须在</body>
的末尾或在window.onload
或(在jQuery中)$(document).ready
上调用。
attachevent也不能跨浏览器。
这个很好
> function callMe() {
> var ll = this;
当使用MS专有的attachEvent时,被调用的侦听器的this关键字不会设置为调用侦听器的元素(就像使用W3C addEventListener方法或HTML内部事件处理程序时一样)。有很多方法可以解决这个问题,通常的方法是使用关联的事件对象,因此函数变成:
function callMe(evt) {
var evt = evt || window.event;
var ll = evt.target || evt.srcElement;
> var id1 = ll.getAttribute('id');
不需要使用getAttribute作为标准DOM属性:
var id1 = ll.id;
.
> alert('Inside callMe...'+id1);
> }
>
> function load() {
> var lnk = new Array();
> lnk = document.getElementsByTagName("a");
创建一个数组并将其赋值给 link 只是为了立即用getElementsByTagName返回的NodeList替换它并没有多大意义。此外,您似乎是在链接之后,所以最好访问文档。getElementsByTagName('a')将包含所有a元素,包括锚点。
所以上面的两行可以是:
var lnk = document.links;
.
> var len = lnk.length;
>
> for (var i=5; i<len; i++) {
> var id = lnk[i].getAttribute('data-id');
> lnk[i].attachEvent('onclick',callMe);
如上所述,attachEvent是一个专有的MS方法,并非所有浏览器都支持。最好有一个函数先尝试W3C addEventListener方法,然后再尝试attachEvent。一个非常简单的版本是:
function addEvent(el, evt, fn) {
if (el.addEventListener) {
el.addEventListener(evt, fn, false);
} else if (el.attachEvent) {
el.attachEvent('on' + evt, fn);
}
}
注意,该事件是等效的HTML内部事件名称,没有前导'on'。所以附加监听器变成:
addEvent(lnk[i], 'click', callMe);
.
> }
> }
而且,该函数应该在文档准备好之后运行,所以可以使用body的onload属性window。Onload 或将脚本放在结束正文标签之前。
最后,不要忘记调用load。下面是重构后的整个脚本:<a href="#" id="link0">Link0</a>
<a href="#" id="link1">Link1</a>
<a href="#" id="link2">Link2</a>
<a href="#" id="link3">Link3</a>
<a href="#" id="link4">Link4</a>
<a href="#" id="link5">Link5</a>
<script type="text/javascript">
function addEvent(el, evt, fn) {
if (el.addEventListener) {
el.addEventListener(evt, fn, false);
} else if (el.attachEvent) {
el.attachEvent('on' + evt, fn);
}
}
function callMe(evt) {
var evt = evt || window.event;
var ll = evt.target || evt.srcElement;
var id1 = ll.id;
alert('Inside callMe...'+id1);
}
function load() {
var lnk = document.links;
var len = lnk.length;
for (var i=5; i<len; i++) {
var id = lnk[i].getAttribute('data-id');
addEvent(lnk[i], 'click', callMe);
}
}
load();
</script>
- 更改跳转到URL操作SSRS 2008 R2的链接目标属性(rc:LinkTarget)
- 如何在不链接/jquery的情况下使用方法应用css属性数组
- 在jQuery中链接时CSS属性不起作用
- 添加数据属性及其值以使用纯javascript进行链接
- 是否有脚本/代码可以一次将链接属性添加到多个链接
- 当图像和链接是 json 对象属性的值时,它们不起作用
- 取消 iframe 中具有 target=“_parent” 属性的链接事件
- 将属性添加到带有href链接但没有#的元素
- 在django帮助文本字段中放置带有onClick属性的链接
- 检查链接对象形式中未定义属性的最佳实践是什么
- 角度:覆盖'@'链接或控制器中隔离作用域中的属性
- 仅将CSS类添加到那些没有“title”属性的链接中
- 如何仅为特定URL向超链接添加属性
- 正在节点d3.js之间创建链接,当前返回Uncaught TypeError:无法读取属性'weight'
- 使用构造函数创建的数字没有其值作为属性,请取消String与构造函数的链接
- 使用jQuery获取链接的属性,并将其作为表单发布到另一个脚本文件
- “data-”属性作为超链接的一部分.HTML 到 JavaScript
- 当锚点的属性“href”包含javascript时,在后台打开链接
- 使用 Javascript 从 Div 中检索 href 属性(链接)
- 我可以将javascript和方法中的属性链接在一起吗?