2013-11-11 5 views
1

У меня есть функция нижесобытий предотвратить по умолчанию

function someName(e){ 
    e.preventDefault(); 
    $('#someCont').dialog({ 
    width:200, 
    height:auto, 
    modal:true 
    }) 
} 

И я использую его как

HTML

<a href="#" onclick="someName()">Link Name </a> 

, но в браузере он выдает ошибку «е не определен» , Может ли кто-нибудь предложить, где я делаю неправильно? якорь тег может быть больше, чем 1

ответ

4

связывают функции нажмите с помощью JQuery вместо того, чтобы поместить его в линию

(function($){ 
    $(function() { 
     function someName(e) { 
      e.preventDefault(); 
     } 

     $('a').click(function(e) { 
      someName(e); 
     }); 
    }); 
})(jQuery); 

или добавить параметр в функции:

onClick="someName(e)" 
+0

Пожалуйста, все, после того, как «или добавить .. . «Обработчики событий Inline - это ужасная идея, и нет никакой гарантии, что она будет работать в кросс-браузере. –

+0

спасибо Alex .. он работает сейчас. # Энтони этот код из старой структуры, у меня нет разрешения на его изменение. однако я буду помнить об этом. –

+0

вы также можете попытаться написать onClick = "someName(); return false;" когда вам вообще не нужно событие (в том случае, когда вы только хотите вызвать preventDefault()) – Alex

2

Вам нужно пройти событие объект

<a href="#" onclick="someName(event)">Link Name </a> 

Альтернативный подход может быть, если вы не используете встроенное событие и не id или класс для привязки и использования для привязки события.

HTML

<a href="#" id="a1">Link Name </a> 

Javascript

$('#a1').click(function(e){ 
    e.preventDefault(); 
    $('#someCont').dialog({ 
    width:200, 
    height:auto, 
    modal:true 
    }) 
}); 
+0

youre отсутствует # в вашем селекторе a1 – Alex

+0

Спасибо @Alex, обновлено. – Adil

+0

Ваш параметр для функции обратного вызова jQuery называется 'event', но вы пытаетесь вызвать' e.preventDefault() '- должно быть' event.preventDefault() '(или вызвать параметр' e'). –

0

В function someName(e), й объект события. Поэтому всякий раз, когда вы вызываете эту функцию, вы должны передать окно событий объекта аргумент, как приведено ниже:

<a href="#" onclick="someName(event)">Link Name </a> // Here I have passed this object 

В противном случае, вы получите ту же ошибку 'e not defined'

+0

За исключением 'this', это элемент привязки, а не событие, так что это не сработает. –

+0

Добавьте event.preventdefault(), чтобы избежать функциональных возможностей привязки по умолчанию и запустить свой собственный код для этого. –

+0

Откуда возникает «событие» в этой функции? Передача 'this' в качестве аргумента для' e', а затем попытка вызова 'e.preventDefault()' не будет работать, потому что 'this' не является событием, которое имеет функцию' preventDefault'. –

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