jQuery Нажмите вход и функцию? - PullRequest
2 голосов
/ 23 июня 2011

У меня есть этот HTML

<div class="someclass">                
   <input id="special" type="submit" value="Post"/>                                      
</div>

И я не понимаю, как запустить jQuery, чтобы щелкнуть и запустить функцию? то есть это работает

<div class="someclass">                
   <input id="special" type="submit" value="Post" onclick="specialFunction();"/>                                      
</div>

Но это не так?

jQuery('#special').click(function () {
    specialFunction();
});

Есть идеи?

Ответы [ 6 ]

2 голосов
/ 23 июня 2011

Jquery требуется некоторое время для загрузки. Поэтому вам нужно использовать метод ready () jQuery для загрузки списков событий, как только DOM будет готов.

Во-вторых, вы используете кнопку отправки. Вам нужно отменить его естественное поведение, в противном случае браузер выполнит действие js, а также отправит форму.

Ваш код js должен работать так:

$(document).ready(function() {
    $('#special').click(function () { specialFunction(); });    
});

Попробуйте использовать тег вместо кнопки ввода с типом submit или добавьте «return false;» отменить естественное поведение браузера.

С наилучшими пожеланиями, Пол

1 голос
/ 23 июня 2011

Необходимо убедиться, что вы прикрепили событие, когда элемент готов и доступен в документе.Либо поместите сценарий привязки события после элемента в документе, либо используйте событие ready () в документе и привяжите событие внутри (предпочтительно).

jQuery(document).ready(function() {
    jQuery('#special').click(specialFunction);
}):

Если вы 'Если вы собираетесь обрабатывать форму без ее отправки, вам нужно запретить действие браузера по умолчанию.Правильный способ сделать это с помощью jQuery - использовать метод события protectDefault () .

jQuery(document).ready(function() {
    jQuery('#special').click(function(event) {
        event.preventDefault();
        specialFunction();
    });
}):
1 голос
/ 23 июня 2011

Изменить это:

jQuery('#special').click(function () {
    specialFunction();
});

к этому:

$('#special').click(function () {
    specialFunction();
    return false;
});

Посмотрите - http://jsfiddle.net/ajthomascouk/y52fr/

1 голос
/ 23 июня 2011

Добавьте этот код return false; блок в конец значения атрибута onclick.

Это происходит потому, что вы нажимаете кнопку отправки формы.

И используете $(document).ready();

0 голосов
/ 23 июня 2011
$("#special").click(function(e) {
  e.preventDefault();
  specialFunction();
});
0 голосов
/ 23 июня 2011

попробуйте это:

$(document).ready(function() {
    jQuery('#special').click(function () {
        specialFunction();
        return false;
    });
});

, но я рекомендую использовать инструкцию live для применения к любым ссылкам, которые могут появиться позже, при этом:

$(document).ready(function() {
    $('#special').live("click", function() {
        specialFunction();
        return false;
    });
});
...