#jquery
#jquery
Вопрос:
$( element ).click( function() {
});
Как я могу проверить, нажат элемент или нет? Я делаю вот так
function element() {
$( "#element" ).click( function() {
return 0;
} );
}
if( element() == 0 ) {
alert( "yes" );
} else {
alert( "no" );
}
Но это ничего не возвращает.
Комментарии:
1. Вы не можете
return
из обработчика событий. Пожалуйста, опишите реальную проблему, которую вы пытаетесь решить. Когда именно вы хотите проверить, был ли нажат элемент или нет?2. У меня есть две функции, и я хочу запустить вторую функцию на основе события click, если первая функция возвращает 0, это означает, что нажмите, чтобы запустить вторую функцию, а если нет, чтобы запустить ее, но с другими параметрами
3. Итак, вы в основном хотите вызвать функцию при первом нажатии и ту же функцию с разными параметрами при втором (и последующих) нажатии (ах)?
4. На самом деле нет, я хочу посмотреть, нажата ли она, чтобы я мог внести дополнительную логику .. поэтому, если она нажата, чтобы запустить функцию с одними параметрами, а если нет, то с другими. Феликс, ваш код работает, но он работает только тогда, когда логика заключается в щелчке, а мне это не нужно
5. @gamb: Ну, вам не обязательно проводить тестирование внутри обработчика щелчков. Вы можете делать это снаружи, когда / где захотите.
Ответ №1:
Вы могли бы использовать .data()
:
$("#element").click(function(){
$(this).data('clicked', true);
});
а затем проверьте это с помощью:
if($('#element').data('clicked')) {
alert('yes');
}
Чтобы получить лучший ответ, вам необходимо предоставить больше информации.
Обновить:
Основываясь на вашем комментарии, я понимаю, что вы хотите что-то вроде:
$("#element").click(function(){
var $this = $(this);
if($this.data('clicked')) {
func(some, other, parameters);
}
else {
$this.data('clicked', true);
func(some, parameter);
}
});
Комментарии:
1. Да, после множества изменений в моем коде я сделал это, это было похоже на tnx для всех, и проверка предназначена для u.
2. Что, если элемент имеет две кнопки? Значит, те же идентификаторы, но разные классы?
3. @JohnSmith: не уверен, что ты имеешь в виду. Не имеет значения, ко скольким элементам привязан обработчик. Он всегда работает с выбранным элементом.
Ответ №2:
Используя jQuery, я бы предложил более короткое решение.
var elementClicked;
$("element").click(function(){
elementClicked = true;
});
if( elementClicked != true ) {
alert("element not clicked");
}else{
alert("element clicked");
}
(«элемент» здесь должен быть заменен фактическим тегом name)
Ответ №3:
<script>
var listh = document.getElementById( 'list-home-list' );
var hb = document.getElementsByTagName('hb');
$("#list-home-list").click(function(){
$(this).style.color = '#2C2E33';
hb.style.color = 'white';
});
</script>
Комментарии:
1. Вы должны объяснить, что делает ваш фрагмент кода. И далее, будет лучше, если вы подтолкнете пользователя к правильному решению, если решение простое, вместо того, чтобы публиковать решение как оно есть.
Ответ №4:
<script type="text/javascript" src="jquery-1.6.1.min.js"></script>
<script type="text/javascript">
var val;
$(document).ready(function () {
$("#click").click(function () {
val = 1;
get();
});
});
function get(){
if (val == 1){
alert(val);
}
}
</script>
<table>
<tr><td id='click'>ravi</td></tr>
</table>
Комментарии:
1. Выполняйте любую логику, которую вы хотите, в обработчике щелчков.
Ответ №5:
Хорошо, прежде чем я перейду к решению, давайте остановимся на одном факте: Javascript основан на событиях. Поэтому вам обычно приходится настраивать обратные вызовы, чтобы иметь возможность выполнять процедуры.
Основываясь на вашем комментарии, я предположил, что у вас есть триггер, который будет выполнять логику, которая запускает функцию, в зависимости от того, нажат элемент или нет; для демонстрации я сделал это «кнопкой отправки»; но это может быть таймер или что-то еще.
var the_action = function(type) {
switch(type) {
case 'a':
console.log('Case A');
break;
case 'b':
console.log('Case B');
break;
}
};
$('.clickme').click(function() {
console.log('Clicked');
$(this).data('clicked', true);
});
$('.submit').click(function() {
// All your logic can go here if you want.
if($('.clickme').data('clicked') == true) {
the_action('a');
} else {
the_action('b');
}
});
Живой пример: http://jsfiddle.net/kuroir/6MCVJ /
Ответ №6:
Это то, что я пробовал, и у меня это работает довольно хорошо
$('.mybutton').on('click', function() {
if (!$(this).data('clicked')) {
//do your stuff here if the button is not clicked
$(this).data('clicked', true);
} else {
//do your stuff here if the button is clicked
$(this).data('clicked', false);
}
});
для получения дополнительной информации проверьте эту ссылку
jQuery переключает щелчок