Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript EventListener不使用锚定电话:XXXXXXXXX_Javascript_Html - Fatal编程技术网

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);
    });
});