2016-07-18 3 views
0

私はDatatableでビューを持っています。表の各行には、「姓」と「姓」を含む各列のユーザー情報が含まれています。 「姓」または「名字」をクリックすると、関連するユーザープロファイルページにリンクする必要があります。DataTableの行とその列に2つの独立したonclickリンクイベントがある方法

しかし、私はテーブル内の各行に結びついたリンクも作成しました。行をクリックすると別のURLに移動する必要があります。イベントハンドラのコードは次のとおりです。

$('#promoters > tbody > tr').live('click', {}, function (e) { 
    $.ajax({ 
      type: "GET", 
      url: "/Ajax/GetUserbyEmail?email=" + $('#email').val(), 
     }) 
    } 

問題は、両方のリンクハンドラが同時に動作する必要があることです。 「姓」または「名字」列をクリックすると、プロファイルページにリンクする必要があり、行の他の場所をクリックすると、上記のAJAXを呼び出す必要があります。

+0

'(生きる)'長年にわたって廃止されました。 '> = 1.7'のバージョンを使用している場合は、' on() 'を使用してください。 – charlietfl

答えて

0

クリックイベントハンドラでアンカーを無視するのはどうですか?イベントターゲットはe.target.nodeNameで取得できます。

From the jQuery documentation.

$('#promoters > tbody > tr').on('click', function(e) { 
    // only execute ajax request when element is not an anchor 'a' 
    if(e.target.nodeName.toLowerCase() !== "a") 
     $.ajax({ 
      type: "GET", 
      url: "/Ajax/GetUserbyEmail?email=" + $('#email').val(), 
     }) 
} 
+0

IEの場合、nodeNameを小文字にする必要があると思います。 jQueryを使用する 'is()'も便利です – charlietfl

+0

はい、そうです。それはその後、より安全です。ありがとう。しかし、私はこの場合にjQueryを使いたくありません。最初に 'e.target'をjQueryオブジェクトにキャストし、' .is() 'でチェックを使用する必要があるからです。私たちはオブジェクトをそれ以上使用しないので、この場合は遅く、必要ではありません。 – eisbehr

+0

こんにちは@eisbehr解決策はうまくいきました。 "e"について少し教えてもらえますか?e(e)は何ですか?非常に感謝します。 – Sam

関連する問題