Javascript EventListener不使用锚定电话:XXXXXXXXX
我有一个带有Javascript EventListener不使用锚定电话:XXXXXXXXX,javascript,html,Javascript,Html,我有一个带有href=“tel:XXXXXXXXX”的标签,我需要捕捉点击事件 我已经在chrome上测试了以下代码:$(document).on('click',console.log)。如果单击此标记浏览器,它将调用应用程序,但不会触发单击事件 $('click',console.log') 这是可行的,但我对ajax的内容加载有问题。我的代码加载了一个页面,一段时间后应用程序通过ajax添加了内容。当我使用('click',('a[href^'tel']”,console.log)上的$(
href=“tel:XXXXXXXXX”
的标签,我需要捕捉点击事件
我已经在chrome上测试了以下代码:$(document).on('click',console.log)
。如果单击此标记浏览器,它将调用应用程序,但不会触发单击事件
$('click',console.log')代码>
这是可行的,但我对ajax的内容加载有问题。我的代码加载了一个页面,一段时间后应用程序通过ajax添加了内容。当我使用('click',('a[href^'tel']”,console.log)上的$(document).on
时,出现了一个问题。我认为这会有所帮助
$("a").click(function(e) {
e.preventDefault();
alert('clicked');
window.location.href = 'tel:+496170961709';
});
这会将事件侦听器绑定到具有href
属性的所有单击a
标记,并阻止单击本身。单击后,您将能够使用控制台查看单击了哪个元素以及使用了什么href
。确定,我找到了解决方法。
我使用前面的事件“mousedown”并将attr“href”更改为“only number”以禁用操作单击
代码:
这将从a
标签中获取电话号码,点击该标签时,标签的起始值为tel
$("a[href^='tel']").on("click", function(e) {
var hrefText = this.getAttribute("href");
var str = hrefText;
var res = str.split(":");
alert(res[1]);
});
初始荷载
我首先建议您在将任何事件绑定到元素之前等待初始值
// DOM ready shorthand
$(function() {
$("a[href^='tel']").on('click', function(e) {
// Do work here
});
});
AJAX内容
如果在初始加载之后添加其他元素,则还必须将事件绑定到这些新元素
您还可以向已绑定click events的元素添加一个数据属性,并且只向尚未具有该数据属性的元素添加数据属性,但这是额外的不必要的工作
完整示例代码
嘿!你问的有点难理解,你介意用更清晰的英语再问一遍吗?我想他(或她)正在寻找preventDefault():我有一个带有href的a
标签,如“tel:XXXXXXXXX”。我需要捕获单击
事件,但当我单击此标记时,浏览器不会触发此事件。所有其他标记都正常工作。当我单击时,浏览器直接调用应用程序,但不会在javascript中触发事件。此工作正常。但我的浏览器在ajax加载内容时遇到问题。我的代码在页面上加载,并且在一段时间后添加应用程序内容由ajax提供。当我使用$(文档)时,('click',('a[href^='tel'])on('console.log)
是个问题。你走的路是对的!你可以像这样使用委托事件监听器
:$(文档)。on('click',a[href^='tel']),函数(e){console.log(e);
。我也为你的.Thx编辑了我的答案,但是$(文档).on('click','a[href^='tel']),function(e){console.log(e)};
和$(文档).on('click','a[href^='tel']),console.log)
是同一个代码。这不能解决我的问题。它不是同一个代码,因为您无法阻止从console.log调用。您拥有
使用实际的回调函数
,该函数包含preventDefault
和/或stopPropagation
调用。好的,您有权。当我编写自己的回调时,我可以停止agation,但我有问题,因为我没有触发事件;)您好,虽然这可能会回答问题,但请提供一些上下文来解释它的工作方式和原因。:)您可以使用多个查询选择器/事件,方法是:$(document)
将函数存储在常量中被认为是糟糕的做法
,因为这会使您和其他人更难找到原始代码。我知道第一个技巧,但我认为这个语法比您的建议更清晰。技巧2没问题,很高兴知道这是糟糕的做法。Thx,这是一个很酷的技巧$([href^='tel']),html)。在('click',clickEvent);
。在这个项目中,我不能使用它,但我将来会使用它。您还可以执行类似于$(html)的操作。查找('a[href^='tel']'))
,我认为这是一种更具可读性和简洁的语法。
$("a[href^='tel']").on("click", function(e) {
var hrefText = this.getAttribute("href");
var str = hrefText;
var res = str.split(":");
alert(res[1]);
});
// DOM ready shorthand
$(function() {
$("a[href^='tel']").on('click', function(e) {
// Do work here
});
});
// DOM Ready Shorthand
$(function() {
// Click Handler
function clickEvent(e) {
// Do work here
}
// Bind click event to initial tels
$("a[href^='tel']").on('click', clickEvent);
// Arbitrary AJAX request for demonstration (wherever yours may be)
$.ajax('/newContent')
.done(function(html) {
// Adding our response HTML to the page within #someElement
$('#someElement').append(html);
// Bind click event to the new tel elements scoped to the returned html
$("a[href^='tel']", html).on('click', clickEvent);
});
});