2012-04-10 2 views
1

Ich habe eine Tabelle, die einen Link als Tabellendaten enthält, ich möchte Tabellenzeile klickfähig machen. Dazu benutze ich die folgende jQuery.Problem in jquery beim Erstellen anklickbarer Tabellenzeile, die Link in Tabellendaten enthalten

Funktionalität dieser ist wie

  1. Wenn auf Zeile klicken Sie ruft eine Aktion und die Daten für das wird in einem neuen Fenster angezeigt.
  2. Wenn Sie auf den Tabellendatenlink klicken, öffnet sich der Link im neuen Fenster und es wird keine Aktion für den Zeilenklick ausgeführt.

Code:

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'); 
     }); 
    }); 
}); 

Jetzt Problem ist, dass, wenn ich zum ersten Mal auf dem Link Tabellendaten klicken und danach habe ich auf Tabellenzeile klicken, um es nicht in einem neuen Fenster zu öffnen, aber die aktuelle Seite auf der Seite umleiten welches voraussichtlich in einem neuen Fenster geöffnet wird.

+0

Sie meinen, sagen, ich klickte Zeile 1: Ich sehe row1 Popup und jetzt klicke ich Zeile 2: row1 Popup wird durch row2 Inhalt ersetzt? – Dhiraj

+0

Öffnen Sie ein Popup, wenn auf eine Zeile geklickt wird. Wenn die Zeile über eine Verknüpfung verfügt und Sie die Maus darüber bewegen, lösen Sie das click -Ereignis (damit sich kein Popup öffnet) und laden Sie die URL schließlich auf der aktuellen Seite, wenn Sie den Mauszeiger verlassen. Willst du das machen? Und die URL öffnet sich nicht innerhalb der aktuellen Seite? – codef0rmer

+0

Klicken Sie auf Tabellenzeile wird Link im Popup-Fenster öffnen und andere, die Tabelle Datenlink, wenn wir auf diesen Link klicken, wird dies in anderen Popup-Fenster geöffnet – pd27

Antwort

1

Sie gehen in die falsche Richtung.

Statt herumzubindeln und das Klickereignis zu lösen, behandeln Sie einfach auch die Ereignisse für die Ankerelemente und überprüfen Sie in der Handlerfunktion selbst, was angeklickt wurde und führen Sie die entsprechenden Aktionen aus. Neuer Code wäre:

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

Ich möchte Popup auf beiden Ereignis – pd27

+0

So ändern Sie einfach 'document.location =' zu 'window.open (' kann nicht sehen, was ist das Problem? –

+0

in diesem auf klicken Sie auf tr funktioniert nicht – pd27