2012-02-24 32 views
5

Tôi có các liên kết bên trong <td> s, nhưng tôi cũng có một sự kiện nhấp chuột trên tất cả <td> s. Mã này trông như thế này:Theo liên kết bên trong sự kiện nhấp JQuery

$(document).ready(function() { 
    $('td.event').click(function() { 
     var eventName = prompt('Enter event:'); 
     if (eventName != null && eventName.length > 0) { 
      window.location = '?event=' + eventName; 
     } 
    }); 
}); 

Tôi muốn chỉ cần làm theo các liên kết mà không hiển thị popup nếu người dùng nhấp vào liên kết, nhưng để hiển thị popup nếu người dùng nhấp bất cứ nơi nào khác trong <td>. Điều này có thể xảy ra trong JQuery không?

+0

Các bạn đã thử định nghĩa 'cái sự kiện click' trên tất cả các' a' yếu tố qua JQuery? –

Trả lời

3

Thêm phần này vào cuối handler document.ready của bạn:

$('td.event a').click(function(e) { 
    e.stopPropagation(); 
}); 
+0

Tập lệnh dường như không hoạt động khác với mã này. Sự kiện có lan truyền từ phần tử bên trong nhiều nhất hay phần ngoài nhất? –

+0

Nó sẽ hoạt động. Bạn đã đặt điều này bên trong trình xử lý 'document.ready' chưa? Nó phải ở trong bộ xử lý đó. Xem bản trình diễn trên [jsfiddle] (http://jsfiddle.net/32hXu/1/). – bfavaretto

+0

Xin lỗi nó đã làm việc, tôi vừa phát hiện ra rằng tôi đã đánh vần 'stopPropagation()' là 'stopPropogation()' khiến kịch bản thất bại âm thầm. Cảm ơn thời gian và sự kiên nhẫn của bạn. –

0

Nó có thể là hữu ích.

$("td.event a").click(function(e){ 
    e.stopPropagation(); 
}); 
3
function yourFunction() 
{ 
    var eventName = prompt('Enter event:'); 

    if(eventName != null && eventName.length > 0) { 
     window.location = '?event='+eventName; 
    } 
} 

$('td').click(function() { 
    yourFunction(); 
}); 

$('td a').click(function() { 
    window.location = $(this).attr('href'); 
}); 

nên làm các trick.

+0

Điều này theo sau liên kết khi bạn nhấp vào liên kết, nhưng lời nhắc vẫn xuất hiện. Có cách nào để chặn lời nhắc khi liên kết được nhấp không? –

0

điều này nên thực hiện.

<!DOCTYPE html> 
<html> 
<head> 
    <script src="jquery.js"></script> 
    <script> 
     $(document).ready(function() { 
      $("td").click(function(event){ 
       if(!event.isPropagationStopped()) { 
        var eventName = prompt("Enter event: "); 
        if(eventName != null && eventName.length > 0) { 
         window.location = "?event=" + eventName; 
        } 
       } 
      }); 
      $("a").click(function(event){ 
       event.stopPropagation(); 
      }); 
     }); 
    </script> 
</head> 
<body> 
    <table> 
     <tr> 
      <td style="background-color: grey; width: 100px; height: 20px;"> 
       <a href="http://www.google.be">google</a> 
      </td> 
     </tr> 
    </table> 
</body> 

Các vấn đề liên quan