0

私は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 のみが起動していることを確認する最善の方法は、の内容を 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

href の代わりに javascript を使用してリダイレクトを実行する意図についてはよくわかりません。とにかく、アプローチの1つがここにあります...

「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 に答える