仅针对点击的某些链接文字发送提醒

时间:2018-02-11 16:46:47

标签: javascript jquery hyperlink

我有一种情况,如果选择了超链接的某个链接文本,我需要提醒用户。此代码模拟了我试图克服的场景。由于代码现在正在运行,因此在点击任何链接文本而不仅仅是指向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');
}

3 个答案:

答案 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');
    });
});

见工作小提琴:https://jsfiddle.net/60dp8kc7/