当前位置: 首页 > 面试题库 >

如何防止锚标签上的默认值?

姬俊能
2023-03-14
问题内容

假设我有一个锚标记,例如

<a href="#" ng-click="do()">Click</a>

如何防止浏览器导航到 AngularJS中的 #?


问题答案:

更新 :此后,我改变了主意。经过更多的开发和花时间进行此工作之后,我相信针对此问题的更好解决方案是执行以下操作:

<a ng-click="myFunction()">Click Here</a>

然后更新您css的规则,使其具有附加规则:

a[ng-click]{
    cursor: pointer;
}

它更加简单,并提供完全相同的功能,并且效率更高。希望对将来寻找该解决方案的其他人有所帮助。

以下是我以前的解决方案,仅出于遗留目的而留在这里:

如果您经常遇到此问题,则可以通过以下简单指令来解决此问题:

app.directive('a', function() {
    return {
        restrict: 'E',
        link: function(scope, elem, attrs) {
            if(attrs.ngClick || attrs.href === '' || attrs.href === '#'){
                elem.on('click', function(e){
                    e.preventDefault();
                });
            }
        }
   };
});

它检查所有锚标记(<a></a>),以查看其href属性是否为空字符串"")或哈希('#')或是否有ng- click分配。如果发现这些条件中的任何一个,它将捕获事件并阻止默认行为。

唯一的缺点是它为所有锚标记运行此指令。因此,如果页面上有很多锚标记,而只想防止其中的少量锚标记的默认行为,则此指令的效率不是很高。但是,我几乎总是想要preventDefault,因此我在AngularJS应用程序中全部使用了此指令。



 类似资料:
  • 我有一个父pom,它为我的其他组件提供所需的版本号变量 您必须使用分类器将补充工件附加到项目中,而不是替换它们 我发现这是因为jar打包固有的maven jar插件默认绑定,但我正在进行war打包,所以在war打包之后,默认jar执行开始并抛出上面的一个。任何停止违约的解决方案都将帮助我提前感谢。

  • 问题内容: 我正在尝试做类似于嵌入式Google地图的操作。我的组件应忽略单点触摸(允许用户滚动页面),并在其自身外部捏合(允许用户缩放页面),但应对双键触摸做出反应(允许用户在组件内部导航),并在这种情况下禁止任何默认操作。 如何防止触摸事件的默认处理,仅在用户用两只手指与我的组件进行交互的情况下? 我尝试过的 我尝试捕获,和。事实证明,在FF Android上,对部件进行捏合时触发的第一个事件

  • 我有一个带有几个文本字段的表单。当我用数据填充它时,有一些整数文本字段显示“0”,这是整数的默认值。我希望文本字段是空的,而不是零。 请帮忙。

  • 以下是postgres 9.1数据库的一些SQL示例: 这是我的python脚本: 有没有办法防止标签相互重叠?理想情况下是以自动方式,因为我无法预测棒的数量。

  • 问题内容: 我想向包含标签的浏览器输出一行文本。呈现此效果时,DIV似乎会换行。如何在同一行的div标签中包含内容-这是我的代码。 我试图在这里整理一下。如何在一行上显示此内容? 问题答案: 该标签是块元素,造成这种行为。 您应该改用内联元素。 如果您 确实 要使用,请添加。(您也可以将其放入CSS规则中)

  • 问题内容: 如何防止onclick方法中的默认设置?我有一个传递自定义值的方法 问题答案: 让您的回调返回并将其传递给处理程序: 但是,要创建可 维护的 代码,您应该避免使用_“内联Javascript”_(即直接位于元素标签内的代码),并通过包含的Javascript源文件(称为unobtrusiveJavascript)修改元素的行为。 标记: 代码(单独的文件):