2015-04-26 2 views
0

У меня есть ссылка вроде этого.HTML onclick и href

<a href="board.php?id={$id}" onclick="javascript:parent.$.fancybox.open({href : 'board.php?id={$id}', type: 'ajax'});"> 

Если JavaScript отключен, браузер может использовать значение href для загрузки страницы. Но, если JavaScript включен, onclick и href будут работать вместе. Как я могу это предотвратить? Я хочу, чтобы href не работал, когда JavaScript включен.

+1

возможно "this.preventDefault();" или "return false"; может работать (внутри onclick), но я лично обработаю событие click внутри файла javascript или вне привязки. – briosheje

ответ

1

Вы должны использовать либо event.preventDefault() или значение false возврата:

<a href="board.php?id={$id}" onclick="javascript:parent.$.fancybox.open({href : 'board.php?id={$id}', type: 'ajax'});event.preventDefault();"> 

or 

<a href="board.php?id={$id}" onclick="javascript:parent.$.fancybox.open({href : 'board.php?id={$id}', type: 'ajax'});return false;"> 

Действительно, хотя, вы не должны использовать встроенные обработчики событий, как это. Вы должны дать свою ссылку id или class и присоединить обработчик к нему так:

<a href="board.php?id={$id}" id="myElement">something</a> 
<script> 
    document.getElementById('myElement').onclick = function() { 
     parent.$.fancybox.open({href : 'board.php?id={$id}', type: 'ajax'}); 
     event.preventDefault(); 
    }; 
</script> 

Это сделает много легче читать и поддерживать вниз по дороге.

Простой jsFiddle demo.

4

Вам необходимо использовать event.preventDefault(); или return false;.

<a href="board.php?id={$id}" onclick="javascript:parent.$.fancybox.open({href : 'board.php?id={$id}', type: 'ajax'});return false;"> 

ИЛИ Использование JQuery:

$('a').on('click', function(e) { 
    e.preventDefault(); // Stop redirect 
    // Your code here 
});