0

我对 Javascript/Ajax 比较陌生。

当用户点击某些网址时,我希望完全使用 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 被触发的最佳方法是更改​​ to 的href内容#。这样我就可以确保 url 本身不会消失,只有我的 javascript 正在触发。但是,我将如何获得我的url价值row_edit()呢?

也许我在这里采取了错误的方法。你们如何解决这个问题?

4

3 回答 3

2

为了确保只有 javascript 被触发(取消点击的默认操作(导航)),您必须preventDefault();在点击处理程序中调用。

前任:

$(document).ready(function () {  
        $(".row_edit").click(row_edit);
    });

   function row_edit(event) {
      var url = $(this).attr("href") + "/";
      ...
      event.preventDefault();
   }
于 2012-09-03T09:37:22.630 回答
1

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

如果您正在为支持“data-”(HTML5)的现代浏览器实现,那么您可以使用这些属性

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

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

 var url = $(this).attr("data-url") + "/";
于 2012-09-03T09:29:23.953 回答
0
<a href="#"> click me </a>
  1. '#' 用于阻止 clcik

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

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

参考链接(jQuery): -

http://jsfiddle.net/8LeaP/

于 2012-09-03T09:34:26.630 回答