正在捕获.单击以获取URL

Capturing .click for URLs

本文关键字:获取 URL 单击      更新时间:2023-09-26

我对Javascript/Ajax还比较陌生。

当用户点击某些url时,我希望完全用Javascript/jquery来处理点击。

<a class="row_edit" href="/sales_item/edit/{{ item.id }}"></a>

我所做的是向这个html文件添加一个javascript:

   $(document).ready(function () {  
        $(".row_edit").click(row_edit);
    });
   function row_edit() {
      var url = $(this).attr("href") + "/";
      ...
   }

这运行得很好,每次我点击row_edit时,javascript都会启动并为我加载部分网站。但在某些情况下,实际链接似乎会启动(我看到部分网站加载为整个屏幕)。似乎存在种族状况。

我认为确保只有javascript被激发的最好方法是将href的内容更改为#。通过这种方式,我确保url本身无论如何都不会消失,并且只有我的javascript在启动。但是,我该如何在row_edit()中获得我的url值呢?

也许我在这里采取了错误的做法。你们是怎么解决这个问题的?

要确保只有javascript在启动(取消点击的默认操作(导航)),您必须在点击处理程序中调用preventDefault();

例如:

$(document).ready(function () {  
        $(".row_edit").click(row_edit);
    });
   function row_edit(event) {
      var url = $(this).attr("href") + "/";
      ...
      event.preventDefault();
   }

我不确定使用javascript而不是href执行重定向的意图。无论如何,其中一种方法是。。。

如果你正在为支持"数据"(HTML5)的现代浏览器实现,那么你可以使用这样的属性

<a class="row_edit" data-url="/sales_item/edit/{{ item.id }}" href="#"></a>

并修改javascript以获得适当的属性值

 var url = $(this).attr("data-url") + "/";
<a href="#"> click me </a>
  1. "#"用于阻止clcik

  2. 通过jquery阻塞默认事件。

  3. 添加新的事件处理程序。

参考链接(jquery):-

http://jsfiddle.net/8LeaP/