今天做表格前臺(tái)導(dǎo)出到xls時(shí),想自動(dòng)觸發(fā)a的點(diǎn)擊。但失敗。最后找到這個(gè)文件。
我嘗試過多次用jQuery模擬用戶點(diǎn)擊a標(biāo)簽的功能,但都沒有成功,并且困擾了很久。前段時(shí)間的一次發(fā)呆,冒出了新的想法,于是就動(dòng)手進(jìn)行了測試。
先看下邊的代碼:
代碼如下:
<html>
<head>磨途歌-A標(biāo)簽測試1<head>
<body>
<a href="">磨途歌<a>
</body>
</html>
<script src=">
<script>
jQuery(function($) {
//給所有A標(biāo)簽綁定點(diǎn)擊觸發(fā)事件
$('a').click(function() {
alert(1);
});
//觸發(fā)所有A標(biāo)簽的點(diǎn)擊事件
$('a').click();
});
</script>
上邊的代碼確實(shí)已經(jīng)觸發(fā)了點(diǎn)擊A標(biāo)簽事件,但大家一定也會(huì)有疑問,為什么點(diǎn)擊了A標(biāo)簽,卻不觸發(fā)A標(biāo)簽的跳轉(zhuǎn)事件?
一開始還以為是瀏覽器做了相應(yīng)的安全措施,屏蔽了JS對(duì)A標(biāo)簽的操作,后來發(fā)現(xiàn),并不是這樣的,接下來就說說其中的原委。
在開始解釋前,我先拋出一個(gè)問題。在我們點(diǎn)擊“A標(biāo)簽”的時(shí)候,究竟是點(diǎn)擊了什么才發(fā)生的跳轉(zhuǎn)?
1)點(diǎn)擊的是“A標(biāo)簽”本身?
2)點(diǎn)擊的是“A標(biāo)簽”中顯示的文字?
說到這里,大家應(yīng)該明白了,我們上邊的代碼已經(jīng)證實(shí)了點(diǎn)擊A標(biāo)簽本身,并不會(huì)觸發(fā)跳轉(zhuǎn)到指定鏈接的事件,就是說,我們平時(shí)都是點(diǎn)擊的A標(biāo)簽中的文字了?
既然有了頭緒,那么就來動(dòng)手試試。
代碼如下:
<html>
<head>磨途歌-A標(biāo)簽測試2<head>
<body>
<a href="">磨途歌<a>
</body>
</html>
<script src=">
<script>
jQuery(function($) {
var mo2g = '<span id="mo2g">磨延城<span>';
//給A標(biāo)簽中的文字添加一個(gè)能被jQuery捕獲的元素
$('a').append(mo2g);
//模擬點(diǎn)擊A標(biāo)簽中的文字
$('#mo2g').click();
});
</script>
這下效果出來了,事實(shí)證明了上述的推斷是正確的,所以要想用JS模擬點(diǎn)擊A標(biāo)簽事件,就得先往A標(biāo)簽中的文字添加能被JS捕獲的元素,然后再用JS模擬點(diǎn)擊該元素即可。
以上就是本文講訴的相關(guān)jQuery中$("a").click()無效問題的分析了,希望小伙伴們能夠喜歡。
更多信息請查看IT技術(shù)專欄