jQuery中$.click()无效问题分析

今天做表格前台导出到xls时,想自动触发a的点击。但失败。最后找到这个文件。

我尝试过多次用jQuery模拟用户点击a标签的功能,但都没有成功,并且困扰了很久。前段时间的一次发呆,冒出了新的想法,于是就动手进行了测试。

先看下边的代码:

复制代码代码如下:

 <html>
<head>磨途歌-A标签测试1<head>
<body>
   <a href=" http://blog.mo2g.com">磨途歌<a>
</body>
</html>
<script src=" http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"><script>
<script>
jQuery(function($) {
  //给所有A标签绑定点击触发事件
  $('a').click(function() {
    alert(1);
  });
  //触发所有A标签的点击事件
  $('a').click();
});
</script>

  上边的代码确实已经触发了点击A标签事件,但大家一定也会有疑问,为什么点击了A标签,却不触发A标签的跳转事件?

一开始还以为是浏览器做了相应的安全措施,屏蔽了JS对A标签的操作,后来发现,并不是这样的,接下来就说说其中的原委。

在开始解释前,我先抛出一个问题。在我们点击“A标签”的时候,究竟是点击了什么才发生的跳转?

1)点击的是“A标签”本身?

2)点击的是“A标签”中显示的文字?

说到这里,大家应该明白了,我们上边的代码已经证实了点击A标签本身,并不会触发跳转到指定链接的事件,就是说,我们平时都是点击的A标签中的文字了?

既然有了头绪,那么就来动手试试。

复制代码代码如下:

 <html>
<head>磨途歌-A标签测试2<head>
<body>
   <a href=" http://www.mo2g.com">磨途歌<a>
</body>
</html>
<script src=" http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"><script>
<script>
jQuery(function($) {
  var mo2g = '<span id="mo2g">磨延城<span>';
  //给A标签中的文字添加一个能被jQuery捕获的元素
  $('a').append(mo2g);
  //模拟点击A标签中的文字
  $('#mo2g').click();
});
</script>

这下效果出来了,事实证明了上述的推断是正确的,所以要想用JS模拟点击A标签事件,就得先往A标签中的文字添加能被JS捕获的元素,然后再用JS模拟点击该元素即可。

以上就是本文讲诉的相关jQuery中$("a").click()无效问题的分析了,希望小伙伴们能够喜欢。





原文参考:http://www.jb51.net/article/60538.htm

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: <!DOCTYPE html> <html> <head> <script src="https://cdn.jsdelivr.net/npm/jquery@3.4.1/dist/jquery.min.js"></script> <script src="https://cdn.jsdelivr.net/gh/jeromeetienne/jquery[email protected]/dist/jquery.qrcode.min.js"></script> <script> $(document).ready(function(){ var timeoutID; $('#qrcode').qrcode({ text: "Hello World!", width: 200, height: 200, // render method: 'canvas', 'image' or 'div' render: 'canvas', // version range somewhere in 1 .. 40 // depends on size of the text // (this is a maximum range, QR Code may automatically add // lower version numbers) minVersion: 1, maxVersion: 40, // error correction level: 'L', 'M', 'Q' or 'H' ecLevel: 'L', // offset in pixel if drawn onto existing canvas left: 0, top: 0, // mode 'plain' (default), 'label' or 'image' mode: 'plain', // label label: 'Scan Me', // font name and size fontname: 'sans', fontcolor: '#000000', // image element image: $('#img-buffer')[0], // callback onrendered: function () { // clear the timeout clearTimeout(timeoutID); } }); // timeout timeoutID = setTimeout(function () { $('#qrcode').empty(); }, 10000); }); </script> </head> <body> <div id="qrcode"></div> <img id="img-buffer" alt="buffer image" style="display:none;"/> </body> </html> ### 回答2: 请参考以下完整的HTML代码,使用jquery.qrcode.min.js库生成一个二维码,并且在扫描后自动失效: ``` <html> <head> <title>生成二维码并自动失效</title> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="jquery.qrcode.min.js"></script> <script> $(document).ready(function() { // 生成二维码 $("#qrcode").qrcode("https://www.example.com"); // 扫描二维码后自动失效 $("#qrcode").click(function() { $(this).empty(); // 清空二维码 $(this).text("二维码已失效"); }); }); </script> </head> <body> <div id="qrcode"></div> </body> </html> ``` 上述代码首先引入了jQuery库和jquery.qrcode.min.js库。在页面加载完成后,我们使用`$("#qrcode").qrcode("https://www.example.com");`来生成二维码,并将其渲染在id为`qrcode`的div。 接下来,我们通过添加点击事件`$("#qrcode").click(function() { ... })`来监听二维码的点击操作。当二维码被点击时,我们清空二维码内容`$(this).empty()`,然后将文本"二维码已失效"添加到div`$(this).text("二维码已失效")`,实现自动失效的效果。 请确保在相应目录下引入了正确的jquery.qrcode.min.js文件,并将"https://www.example.com"替换为你想要生成二维码的目标网址。 ### 回答3: 以下是一个完整的HTML代码,演示如何使用jquery.qrcode.min.js生成一个二维码,并且扫描二维码后,二维码自动失效。 ```html <!DOCTYPE html> <html> <head> <title>生成二维码示例</title> <script src="https://cdn.staticfile.org/jquery/3.5.1/jquery.min.js"></script> <script src="jquery.qrcode.min.js"></script> </head> <body> <h1>生成二维码示例</h1> <div id="qrcode"></div> <script> $(document).ready(function() { // 生成二维码 $('#qrcode').qrcode({ text: "https://example.com", // 需要生成二维码的内容 render: "canvas", // 渲染方式,可以是"canvas"或"table" width: 200, // 二维码的宽度 height: 200 // 二维码的高度 }); // 扫描二维码后失效 $('#qrcode').on('click', function() { // 设置二维码失效样式 $(this).css('opacity', '0.5'); $(this).css('pointer-events', 'none'); // 禁用点击事件 }); }); </script> </body> </html> ``` 在这个例子,我们首先在`<head>`标签导入了jQuery和`jquery.qrcode.min.js`文件。然后,在`<body>`标签创建了一个`<div>`元素用于显示生成的二维码。在脚本部分,我们使用`$('#qrcode').qrcode()`方法生成二维码,指定了需要生成二维码的内容、渲染方式、宽度和高度。然后,我们使用`$('#qrcode').on('click')`方法给二维码添加点击事件,在点击时设置二维码失效的样式,即设置透明度为0.5,并禁用点击事件。 这样,当用户扫描二维码后,二维码的样式会发生改变,用户再次点击无效

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值