Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.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 “只写”;返回false";一次处理点击多个链接_Javascript_Refactoring_Return - Fatal编程技术网

Javascript “只写”;返回false";一次处理点击多个链接

Javascript “只写”;返回false";一次处理点击多个链接,javascript,refactoring,return,Javascript,Refactoring,Return,而不是写入返回false很多时候,有没有一种方法可以设置链接集合,这样,如果单击其中任何一个链接,单击功能将返回false?我仍然希望有大多数链接返回true,因此显示将返回true的代码与返回false的代码将特别受欢迎 目标是编写更少的代码。我也想知道这是不是一个坏主意,因为我不明白为什么 最简单的方法是将一个事件侦听器绑定到文档,并检查目标: 对于具有嵌套图元的锚点,必须添加一个附加循环: var targ = e.target; do { if (targ.nodeName.t

而不是写入
返回false很多时候,有没有一种方法可以设置链接集合,这样,如果单击其中任何一个链接,单击功能将
返回false?我仍然希望有大多数链接
返回true
,因此显示将
返回true
的代码与
返回false
的代码将特别受欢迎


目标是编写更少的代码。我也想知道这是不是一个坏主意,因为我不明白为什么

最简单的方法是将一个事件侦听器绑定到文档,并检查目标:

  • 对于具有嵌套图元的锚点,必须添加一个附加循环:

    var targ = e.target;
    do {
        if (targ.nodeName.toUpperCase() === 'A') {
            e.preventDefault();
            break;
        }
    } while ((targ = targ.parentNode) !== document.documentElement);
    // document.body should be fine. Using document.documentElement in case
    // that a fool places an anchor outside the <body>
    
    var-targ=e.target;
    做{
    if(target.nodeName.toUpperCase()=='A'){
    e、 预防默认值();
    打破
    }
    }while((target=target.parentNode)!==document.documentElement);
    //document.body应该没问题。在case中使用document.documentElement
    //一个傻子把锚放在外面
    
  • 链接也可以通过关键事件触发

谢谢,但我仍然希望有许多链接
返回true
。你能告诉我们,如果
条件是什么样的吗?我想最简单的应该是……`getElementsByClassName==='dontGoThere',yes/no?
target.nodeName.toUpperCase()=='A'
也可以写成
/^A$/I.test((target.nodeName)
@KooiInc是的,但非正则表达式方法稍快一些。@timperson
e.target
保留链接。检查
href
属性的值。例如
if(target.href.substring(0,11)==“javascript:”){..prevent default…
,和
if(/^javascript:[\S\S]*?return\S+true;?\S*$/.test()){…什么也不做…}
@RobW谢谢,对于答案中的完整性,您能否展示一下对于
返回true
返回false
的链接,HTML是什么样子的?
var targ = e.target;
do {
    if (targ.nodeName.toUpperCase() === 'A') {
        e.preventDefault();
        break;
    }
} while ((targ = targ.parentNode) !== document.documentElement);
// document.body should be fine. Using document.documentElement in case
// that a fool places an anchor outside the <body>