2012-04-10 13 views
1

テーブルのデータとしてリンクを含むテーブルがあり、テーブルの行をクリックできるようにしたい。このために私は次のjQueryを使用します。このテーブルの行をクリック可能にするときに問題が発生する

機能が似ている

  1. それがアクションを呼び出すと、そのためのデータが新しいウィンドウに表示された行をクリックします。
  2. テーブルデータリンクをクリックすると、新しいウィンドウでリンクが開き、行クリックの操作はありません。

コード:

jQuery(function($) { 
    $('tbody tr[data-href]').addClass('clickable').click(function() { 
     window.open($(this).attr('data-href'),'mywin','left=20,top=20,width=1240,height=500,toolbar=1,resizable=0'); 
    }).find('a').hover(function() { 
     $(this).parents('tr').unbind('click'); 
    }, function() { 
     $(this).parents('tr').click(function() { 
      window.location = $(this).attr('data-href'); 
     }); 
    }); 
}); 

今の問題は、私が最初にテーブルデータのリンクをクリックして、その後私は、テーブルの行をクリックしたときに、それが新しいウィンドウで開かれていないが、現在のページがページにリダイレクトということですこれは新しいウィンドウで開かれることが予想される。

+0

あなたは、私が行1をクリックしたと言っていることを意味します。私は行1のポップアップを見て、次に行2をクリックします:行1のポップアップは行2のコンテンツに置き換えられますか? – Dhiraj

+0

行をクリックするとポップアップを開きます。行にリンクがあり、その上にカーソルを置いてクリックイベントをバインド解除する(ポップアップを開く必要がない)、最後にカーソルを移動した場合は、現在のページにURLをロードします。これはあなたがやろうとしているのですか? URLは現在のページ内で開かれていませんか? – codef0rmer

+0

テーブルの行をクリックするとポップアップウィンドウのリンクが開き、他のテーブルのデータリンクはこのリンクをクリックすると他のポップアップウィンドウで開きます – pd27

答えて

1

あなたは間違った方向に行きます。

clickイベントのバインドを解除して再バインドするのではなく、アンカー要素のイベントも処理し、ハンドラ関数自体をクリックして適切な処理を実行します。新しいコードは、

jQuery(function($) { 
    $('tbody tr[data-href]').addClass('clickable'); 
    $('tbody').on('click', 'tr[data-href],a', function(evt) { 
     if (this.nodeName.toLowerCase() === "a") { 
      document.location = this.href; 
     } 
     else { 
      window.open($(this).attr('data-href'),'mywin','left=20,top=20,width=1240,height=500,toolbar=1,resizable=0'); 
     } 
     evt.stopPropagation(); 
     return false; 
    }); 
});​ 

Live test caseです。

+0

両方のイベントでポップアップが表示されます – pd27

+0

'document.location = 'window.open('何が問題なのか分からないのですが?)これをクリックすると –

+0

が動作しない – pd27

関連する問題