Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.07.2013, 09:51
Новичок на форуме
Отправить личное сообщение для kilo Посмотреть профиль Найти все сообщения от kilo
 
Регистрация: 23.07.2013
Сообщений: 2

jquery конфликт hover и click
Здравствуйте.
предположим есть кнопка у которой 3 состояния: A,B,C.
начальное состояние кнопки A,перейти из него можно только в состояние B только по click.
после такого перехода состояние может переходить из B в C и обратно при наведении мыши(hover) или при клике.
при этом происходит конфликт hover(или событием mouseover) с событием click.пожалуйста подскажите как решить эту проблему в jquery,если средствами css не обойтись.

Последний раз редактировалось kilo, 23.07.2013 в 09:55.
Ответить с цитированием
  #2 (permalink)  
Старый 23.07.2013, 09:58
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,225

Сообщение от kilo
подскажите как решить эту проблему
Как вариант, просто удалить событие click после его срабатывания...

Т.е. перешел из А в В и событие удалил... Далее только В и С...
Ответить с цитированием
  #3 (permalink)  
Старый 23.07.2013, 09:59
Аватар для ОлегА
Профессор
Отправить личное сообщение для ОлегА Посмотреть профиль Найти все сообщения от ОлегА
 
Регистрация: 25.08.2011
Сообщений: 420

код покажите
Ответить с цитированием
  #4 (permalink)  
Старый 23.07.2013, 10:33
Новичок на форуме
Отправить личное сообщение для kilo Посмотреть профиль Найти все сообщения от kilo
 
Регистрация: 23.07.2013
Сообщений: 2

ну примерно как-то так:
function func_click(h)
{
if( $(h).hasClass("active") )
{ $(h).addClass("inactive").html("...").removeClass( "active"); }
else
{
if ($(h).hasClass("inactive") ) { $(h).removeClass("inactive"); }
$(h).addClass("active").html("...diff");
}
//
}
function func_hover(a)
{
if( $(a).hasClass("active") )
{ $(a).addClass("inactive").html("...").removeClass( "active"); }
else if ($(a).hasClass("inactive") )
{ $(a).removeClass("inactive");
$(a).addClass("active").html("...diff");
}
//
}
$(document).ready(function(){
$('.btn').live("mouseover", function(){ func_hover(".btn"); } );
$('.btn').click( function(e){
e.preventDefault();
$('.btn').die("mouseover");
func_click(".btn");
} );
});
Ответить с цитированием
  #5 (permalink)  
Старый 23.07.2013, 11:57
Аватар для ОлегА
Профессор
Отправить личное сообщение для ОлегА Посмотреть профиль Найти все сообщения от ОлегА
 
Регистрация: 25.08.2011
Сообщений: 420

хз конфликтов нет, все робит, какая именно у вас ошибка выпадает?
Ответить с цитированием
  #6 (permalink)  
Старый 23.07.2013, 12:26
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

что то подобное:
<!DOCTYPE html>
<html>
  <head>
  </head>
  <body>
	<div style="width: 200px; height: 30px; background-color: green;" onmouseover="mouseover(this);"  onmouseout="mouseout(this);" onmousedown="mousedown(this);" onmouseup="mouseup(this);">Жмакай меня полностью!</div>
    <script type="text/javascript">

var clickme = false;
function mouseover(ths)
	{
	ths.style.background = clickme ? 'silver' : 'blue';
	}
	
function mouseout(ths)
	{
	ths.style.background = 'green';
	}
	
function mousedown(ths)
	{
	clickme = true;
	ths.style.background = 'silver';
	}
	
function mouseup(ths)
	{
	clickme = false;
	ths.style.background = 'blue';
	}

document.onmouseup = function()
	{
	clickme = false;
	}
    </script>
  </body>
</html>
Ответить с цитированием
  #7 (permalink)  
Старый 23.07.2013, 13:41
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,225

Сообщение от skrudjmakdak
что то подобное
Оно?

<!DOCTYPE html>
<html>
<head>
<!--
<script src="http://code.jquery.com/jquery-latest.js"></script>
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
div {
	width: 200px; 
	height: 30px; 
	background-color: green;
}
</style>
<script type="text/javascript">
function mouseover(ths) {
	ths.style.background = (ths.className=='on') ? 'silver' : 'blue';
};
function mouseout(ths) {
	ths.style.background = 'green';
};
function mousedown(ths)	{
	ths.style.background = 'silver';
};
function mouseup(ths) {
	ths.style.background = 'blue';
	ths.className='on';
};
</script>
</head>
<body>
	<div onmouseover="mouseover(this);"  onmouseout="mouseout(this);" onmousedown="mousedown(this);" onmouseup="mouseup(this);">Жмакай меня полностью!</div>
</body>
</html>
Ответить с цитированием
  #8 (permalink)  
Старый 23.07.2013, 14:18
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

у вас не правильно. а где ths.className='off'; ?? не идет возврат цвета в первоначальное состояние
Ответить с цитированием
  #9 (permalink)  
Старый 23.07.2013, 14:34
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,225

Сообщение от skrudjmakdak
у вас не правильно
А я и не знал "что именно нужно"...

Сообщение от skrudjmakdak
а где ths.className='off'; ??
Ну именно "off" и не нужен... Достаточно просто убрать "on"

Сообщение от skrudjmakdak
не идет возврат цвета в первоначальное состояние
Таки сделай это самостоятельно и в нужном тебе контексте. Кто мешает?
Ответить с цитированием
  #10 (permalink)  
Старый 23.07.2013, 16:18
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

Сообщение от ksa Посмотреть сообщение
А я и не знал "что именно нужно"...
ну дак в любом случае вы взяли мою (я не против) версию и сделали криво. если уж переделывайте, то переделывайте в лучшую сторону..

Сообщение от ksa Посмотреть сообщение
Ну именно "off" и не нужен... Достаточно просто убрать "on"
я знаю, что не обязательно. но и если и будет стоять, то ошибки не будет.. но не в этом суть то...

Сообщение от ksa Посмотреть сообщение
Таки сделай это самостоятельно и в нужном тебе контексте. Кто мешает?
не понял?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перезагрузка jquery по событию click, без полной перезагрузки страницы Vitaliy88 Общие вопросы Javascript 4 22.11.2012 12:35
Конфликт Ajax и jQuery MadChild Javascript под браузер 2 22.10.2012 18:30
jQuery Click() не работает на объекте, созданном Ajax vovabigov jQuery 13 09.09.2012 14:25
Заменить свойство click на hover, как? denjer Events/DOM/Window 1 06.09.2012 13:28
Конфликт Jquery и Mootools Bangoo jQuery 1 28.03.2011 13:03