2012-02-24 5 views
5

У меня есть ссылки внутри <td>, но у меня также есть событие click на всех <td> s. Код выглядит следующим образом:Следуйте ссылке внутри события JQuery click

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

Я хочу, чтобы просто пройти по ссылке, не показывая всплывающее окно, если пользователь нажимает на ссылку, но, чтобы показать всплывающее окно, если пользователь щелкает где-либо еще в <td>. Возможно ли это в JQuery?

+0

Вы пробовали определения 'click' событие на всех' Ā' элементов с помощью JQuery? –

ответ

3

Добавьте это к концу вашего document.ready обработчика:

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

Скрипт, похоже, не действует по-другому с этим кодом. Происходит ли событие от самого внутреннего элемента или самого внешнего? –

+0

Он должен работать. Вы помещали это в обработчик 'document.ready'? Он должен быть внутри этого обработчика. См. Демонстрацию на [jsfiddle] (http://jsfiddle.net/32hXu/1/). – bfavaretto

+0

Простите, что это сработало, я только что узнал, что я написал 'stopPropagation()' как 'stopPropogation()', из-за чего скрипт терпел неудачу. Спасибо за ваше время и терпение. –

0

Это может быть полезным.

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

должен сделать трюк.

+0

Это следует за ссылкой, когда вы нажимаете на нее, но подсказка все еще появляется. Есть ли способ подавить приглашение при нажатии ссылки? –

0

это должно это сделать.

<!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> 

Смежные вопросы