2010-05-28 2 views
1

играл с этим в течение нескольких часов и не мог понять это.JQuery noob: Показать div на hover, нажмите, чтобы переключить отображение

jsFiddle example here.

В принципе, я хочу, чтобы это отображалось при наведении курсора, и щелкните по нему, чтобы переключить отображение или нет. Я думал, что это способ сделать это с display:block;, но я не могу заставить его работать.

Спасибо за любую помощь.

ответ

1

В настоящее время вы используете $(this) в .click(), но это <button> (#related-btn) не <div> (#show-hide), я думаю, что вы хотите это:

$("#related-btn").hover(function() { 
    $("#show-hide").toggle("slow"); 
}).click(function() { 
    $("#show-hide").toggle(); 
}); 

You can see an updated example here

Или если вы хотели, чтобы это было оживленным в обоих случаях, это немного короче:

$("#related-btn").bind('mouseenter mouseleave click', function() { 
    $("#show-hide").toggle("slow"); 
}); 

Или ... если вы хотите, чтобы не переключать его, но есть щелчок «контактный» это, вы можете сделать это так:

$("#related-btn").hover(function() { 
    if(!$(this).data('pinned')) 
    $("#show-hide").toggle("slow"); 
}).click(function() { 
    $(this).data('pinned', !$(this).data('pinned')); 
}); 

You can see a demo of that here

+0

@Kyle - Добро пожаловать :) Разве что эффект вы после? Я могу немного приспособить этот пример, просто дайте мне знать, если что-то не совсем то, что вы хотите. –

+0

Еще раз спасибо, основная функциональность есть, но когда вы нажмете кнопку, она перестанет функционировать. Думаю. (jq noob) Я был за чем-то более похож на hover: show, click (и mouseleave): покажите, нажмите еще раз: скройте .. если вы понимаете? – Kyle

+1

@Kyle - Попробуйте последний пример в ответе, есть демо-ссылка, это код для «закрепления», из-за отсутствия лучшего термина. - Вот немного измененная версия, прячась сразу же после открепления: http://jsfiddle.net/rfyxD/4/ –

Смежные вопросы