bol*_*iva 21 javascript anchor dom overriding
我不知道我想要完成的任务是否可行.我想覆盖A给定HTML页面的所有锚对象(标记)的默认行为.我知道我可以循环遍历所有A元素并onclick从body元素onload方法动态地添加对它们中的每一个的调用,但我正在寻找更绝对的解决方案.我需要的是为所有A元素分配一个onclick动作,该动作调用一个方法将元素href属性作为参数传递,所以如下:
<a href="http://domain.tld/page.html">
Run Code Online (Sandbox Code Playgroud)
动态变为:
<a href="http://domain.tld/page.html" onclick="someMethodName('http://domain.tld/page.html'); return false;">
Run Code Online (Sandbox Code Playgroud)
就像我说的那样,理想的方法是在文档加载时以某种方式完全覆盖Anchor类.如果不可能,那么我将采用循环遍历所有A元素的方法(我已经知道该怎么做).
CMS*_*CMS 36
如果您不想迭代所有锚元素,则只需使用事件委托,例如:
document.onclick = function (e) {
e = e || window.event;
var element = e.target || e.srcElement;
if (element.tagName == 'A') {
someFunction(element.href);
return false; // prevent default action and stop event propagation
}
};
Run Code Online (Sandbox Code Playgroud)
在这里查看上面的例子.
使用jQuery:
$(function() {
$("a").click(function() {
return someMethodName($(this).attr('href'));
});
});
function someMethodName(href)
{
console.log(href);
return false;
}
Run Code Online (Sandbox Code Playgroud)
window.onload = function() {
var anchorElements = document.getElementsByTagName('a');
for (var i in anchorElements)
anchorElements[i].onclick = function() {
alert(this.href);
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
这是最简单的方法。包裹在<script type="text/javascript">...</script>文档头中,它将在页面加载时运行。
| 归档时间: |
|
| 查看次数: |
31646 次 |
| 最近记录: |