Всем доброе утро,
Я действительно начинаю разрабатывать с помощью jQuery, и я хотел бы сделать это правильно, таким образом, чтобы оптимизировать и семантически правильно. Я написал простой пример, чтобы вы поняли, где моя проблема:
<?php
$file = 'count.txt';
$count = file_get_contents($file);
$count = (int) $count + 1;
file_put_contents($file, $count);
?>
<html>
<body>
<p><?php echo $count; ?></p>
<a href="" id="hello">Cliquez !</a>
</body>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script>
$('#hello').click(function(){
$(this).hide();
});
</script>
</html>
PHP-скрипт подсчитывает, сколько раз загружалась страница и отображает ее. Часть html содержит ссылку <a>, которую я хочу скрыть в сценарии jQuery.
Вышеупомянутый пример не скрывает <a>, или мы не можем видеть его скрытым, потому что браузер обновляет страницу сразу после, так как href пуст. Итак, счет php просто увеличивается, а <a> не скрывается.
Я искал свою проблему и обнаружил, что мне нужно использовать "return false"; в конце моего скрипта, чтобы остановить распространение событий в браузере. Хорошо понял.
Но, на самом деле, "верните ложь"; функция фактически содержит 2 функции: preventDefault() и stopPropagation(). См. Это http://fuelyourcoding.com/jquery-events-stop-misusing-return-false/
Поэтому я хотел бы знать, предпочтительнее ли это (оптимизировано и семантически правильно) использовать тег <button> вместо <a> или продолжать использовать тег <a> и заменить return false; с помощью preventDefault.
заранее спасибо
Вы должны подавить событие по умолчанию, которое происходит при нажатии, таким образом вы можете выбрать кнопку eiter или a-tag для своего собственного (стиля?) Предпочтения. Если его семантически правильная также зависит от контекста;)
<script>
$('#hello').click(function(event){
event.preventDefault();
$(this).hide();
});
</script>
Также см.: http://www.w3schools.com/jquery/event_preventdefault.asp