我有一种情况,如果选择了超链接的某个链接文本,我需要提醒用户。此代码模拟了我试图克服的场景。由于代码现在正在运行,因此在点击任何链接文本而不仅仅是指向Google的链接时会发出警报。我似乎无法让脚本仅隔离选定的链接文本,有没有办法做到这一点?感谢您提供任何帮助。
<!DOCTYPE html>
<html>
<head>
<title>TESTING</title>
<meta charset="utf-8"/>
<script src="http://code.jquery.com/jquery-2.1.0.js"></script>
<script src="c:\\users\\user\\desktop\\test2.js"></script>
</head>
<body>
<h2>
<a href="https://www.google.com/">Google</a>
</h2>
<h3>
<a href = "https://www.reddit.com/">Reddit</a>
</h3>
<h4>
<a href="https://www.google.com/">Google</a>
</h4>
这是我用来尝试发送提醒的脚本:
window.onload = find_link;
function find_link() {
var stuff = $( "a:contains('Google')" );
if (stuff) {
onclick = notify;
}
}
function notify() {
alert('clicked');
}
答案 0 :(得分:2)
问题在于你正在使用的选择器:
var stuff = $( "a:contains('Google')" );
这会返回一个空的jQuery对象,但该对象本身就是真实的;你似乎期望它返回一个布尔值,但显然不是。
当然,您可以重写代码:
$( "a:contains('Google')" ).on('click', notify);
这并不需要包含在函数中,因为您使用jQuery可以将其包装在传统的$(document).ready()
中:
$(document).ready(function(){
$("a:contains('Google')").on('click', notify);
});
或者只是将其放在关闭<script>
标记之前的</body>
元素中,以便在遇到并运行<script>
之前存在各种元素。
参考文献:
答案 1 :(得分:1)
您需要检查对象的长度,否则它将始终返回 true :
var stuff = $( "a:contains('Google')" ).length;
答案 2 :(得分:1)
您可以使用jQuery以下一种方式执行此操作。
$(document).ready(() => {
$('a:contains(Google)').on('click', () => {
alert('Google link clicked');
});
});