【问题标题】:stopping web page jumping back to top after function call函数调用后停止网页跳回顶部
【发布时间】:2020-04-05 17:53:17
【问题描述】:

我正在使用 ViewBag 将列表传递给视图。然后,我在列表中使用 foreach 将列表中的每个字符串一一显示为 href。我有一个功能,允许用户单击每个 href 以将其从列表中删除。问题是,当用户单击 href 以将其从列表和视图中删除时,网页会跳回顶部。有什么办法可以阻止这种情况吗?例如当用户单击以从列表中删除 href 字符串时,页面将保持原位

edit.cshtml

<div class="form-group" style="min-height: 100px">
    <div class="col-md-10" style="min-height: 100px">
        <hr />
        <p><strong>Flagged Questions</strong></p>
        @foreach (var item in ViewBag.FLagList)
        {
        <div>
            <a href="#" onclick="this.parentNode.parentNode.removeChild(this.parentNode)">@item</a>
        </div>
        }
    </div>
</div>

功能

<script>
    function onDelete(elm, id) {
    // Do something with id
    console.log(id)
    elm.parentNode.removeChild(elm)
}
</script>

【问题讨论】:

    标签: javascript c# html asp.net asp.net-mvc


    【解决方案1】:

    您需要从锚标记中删除`href 属性 然后您可以为锚点提供自定义 css 以恢复由于删除 href att 而丢失的样式。

     <a class='custom-link' onclick="this.parentNode.parentNode.removeChild(this.parentNode)">@item</a>
    
    .custom-link:link {
      background-color: yellow;
    }
    
    .custom-link:visited {
      background-color: cyan;
    }
    
    .custom-link:hover {
      background-color: lightgreen;
    }
    
    .custom-link:active {
      background-color: hotpink;
    } 
    

    【讨论】:

    • 完美运行。非常感谢萨菲
    【解决方案2】:

    在你的函数执行后,会触发href="#" 的链接。使用event.preventDefault() 来防止这种情况发生。

    function myFunction(event, val) {
      console.log(val);
      event.preventDefault();
    }
    &lt;a href="#" onclick="myFunction(event, 'myValue')"&gt;Click me&lt;/a&gt;

    【讨论】:

    • 在他的 onclick 属性中已经调用了剃刀函数怎么样。这意味着替换他的剃须刀代码。最佳做法是删除 href att 并通过在 css 中编写自定义类来恢复链接样式
    • @Martin Buezas 我不太确定我会用剃须刀功能做什么,但非常感谢您的回复
    • 好吧,在查看之后,我注意到他的函数不是剃须刀,它是javascript,所以添加一个事件参数会起作用,但是,基本上不需要href属性在那里。所以最好的做法是完全删除该属性而不是阻止其默认
    • 这样你最终会得到不必要的额外 CSS 来保持悬停/活动样式。最佳做法是防止违约。或者,您可以在函数中返回 false 。第三种选择是将javascript:void(0) 添加为您的href 值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多