Я только что начал смотреть на JQuery. В настоящее время у меня нет AJAX в моем веб-приложении.JQuery: Почему ненавязчивая функция JavaScript/Document Ready, а не событие OnClick?
Мой существующий JavaScript в моем HTML выглядит следующим образом:
<form ...>
<p>Find what? <input ...></p>
<div class="ButtonArray">
<a href="AddRecord.ASP&Action=ADD">ADD</a>
<a href="#" onClick="return MyFormSubmit();">FIND</a>
</div>
</form>
Это отображает кнопки для [Добавить] и [Найти]. Для Find необходимо отправить форму, и я использую MyFormSubmit(), который проверяет данные, добавляет визуальный эффект на страницу, а затем POST-данные.
Я мог бы добавить класс или идентификатор в течение кнопку Find и в JQuery я мог бы написать что-то вроде:
$(function() {
$(".MySearchButtonClass").click(function() {
// validate and process form here
});
});
На моем «новичка» стадии понимания с JQuery Я не получить почему я сделал бы это так
Мой старый способ идентифицирует метод рядом с объектом. Возможно, существует риск того, что JS не загрузился до того, как пользователь нажмет кнопку (есть ли? LOAD для JS находится в верхней части страницы).
Метод JQuery Document Ready не будет активирован до тех пор, пока документ не будет загружен (что я предполагаю, гарантирует, что JS присутствует и готов к запуску?), Но он перемещает код в отдельную часть моего HTML-кода file - поэтому, когда я вижу MyButtonArray DIV в источнике HTML, мне не очевидно, какие объекты имеют методы, а какие нет.
Можете ли вы, пожалуйста, помочь мне понять, какие у меня есть варианты и преимущества/gotchas, на которые я должен обратить внимание?
Edit: Я комфортно, что манипуляция DOM - такие как LightBox, которые могут появиться, когда любой эскиз с классом «LightBoxThumb» нажата - будет использовать Ненавязчивый Javascript.
Однако я изо всех сил пытаюсь убедить себя, что кнопка, которая имеет конкретное действие, должна применять свой метод таким образом. (Я, конечно, не ставил бы какой-либо код на кнопку, кроме одного вызова функции на что-то «в другом месте», но, на мой взгляд, это мой лучший ключ к тому, что делает эта кнопка, а слои ненавязчивого Javascript могут сделать это намного сложнее определить)
edit2. - принято ответ
Я взял Russ Cams ответ. Он описывает Unobtrusive Javascript таким образом, который был полезен для меня, когда я больше разбираюсь в том, как следует использовать &.
На данный момент (может измениться, когда у меня будет больше опыта!) Я буду придерживаться события OnClick для одного, неизменяющегося действия на объекте, поскольку я чувствую, что мне будет легче отлаживать - и диагностировать, если возникают проблемы. Для ZebraStripes на столе, что позволяет нажать на заголовок столбца для сортировки (и ситуаций такого типа), я могу видеть преимущества подхода Ненавязчивый Javascript
последний комментарий Расса был особенно полезным, повторил здесь:
«@Kristen - Ты прав, как много тем программирования, есть больше , чем один подход, и люди будут яростно встать на их верования!Если мы говорим об одном методе для одной кнопки, я полностью понять, куда вы пришли из ...
Если мы говорим о многих JavaScript, с той же функцией вызывает для более одного элемента, различные вызовов функций для различных методов, и т.д. Я думаю, что было бы более трудно себе смешивать инлайн и ненавязчивых подходы, и это бы лучше принять тот или иной подход »
Thanks; ссылка на ненавязчивый JavaScript очень полезна; Я видел «jQuery в действии», рекомендованный ранее, и его список покупок! Я прочитаю главы примеров. – Kristen
PS Ссылки на образцы chanters выглядят правильно, но не работали для меня прямо с этой страницы - но они доступны на этом сайте на этой странице: http://www.manning.com/bibeault/ – Kristen
«То же событие поднято на каждом из нескольких элементов «нет проблем с этим - Zebra Strips на таблице, которая, например, разрешала заголовок столбца-столбца для Sort. Что я боюсь в случае этой кнопки отправки одного метода. – Kristen