Мастера jQuery, нужна помощь

12
m0le[x]
На сайте с 08.03.2009
Offline
102
1075

В общем сделал 3 выезжающих блока:

Вот: http://jsfiddle.net/BbmLQ/

При клике div выезжает вверх.

И есть две задачки, подскажите пожалуйста, в какую сторону копать или помогите разобраться.

1) Если нажать на первый блок он развернется, когда нажмешь на второй, первый должен при этом свернуться. В общем одновременно развернутым только один блок должен быть.

2) Так как выезжающий div с прозрачностью, нужно прятать div по которому был клик, то есть при разворачивании div'a description, body должен становиться display:none

Спасибо.

★ Combinat - реально мощная CPA партнерка! (https://combinat.pro/?utm_source=sesign)
palladin_jedi
На сайте с 13.07.2010
Offline
71
#1
m0le[x:
;11026584]1) Если нажать на первый блок он развернется, когда нажмешь на второй, первый должен при этом свернуться. В общем одновременно развернутым только один блок должен быть.

В событии просто проверяйте высоту других блоков и при необходимости сворачивайте.

m0le[x:
;11026584]2) Так как выезжающий div с прозрачностью, нужно прятать div по которому был клик, то есть при разворачивании div'a description, body должен становиться display:none

http://api.jquery.com/hide/

ИМХО, каждый раз DOM дёргать $(this).find('.description3').slideToggle('slow'); не совсем комильфо.

$(".need-item", $(this)).slideToggle('slow');

Так получше будет, ИМХО, опять же...

Сайт о web-разработке и прочем (http://seazo.net)||Продвижение статьями под Google (http://short.seazo.net/ght4zf) Бесплатные консультации рефералам Sape (http://www.sape.ru/r.SWfwWOblBo.php) PHP и JS скрипты на заказ, создание сайтов с нуля и на CMS.
m0le[x]
На сайте с 08.03.2009
Offline
102
#2

palladin_jedi, спасибо большое, разобрался, в итоге нашел готовый плагин с выезжающими панелями и переделал его под себя.

P
На сайте с 09.01.2010
Offline
26
#3

Помогите и мне пожалуйста кто нибудь

есть вот такой кусок кода

    <select>
<option value="{$lang['rat_10']}" onChange="doRate('10', '{$id}'); return false;">{$lang['rat_10']}</option>
<option value="{$lang['rat_9']}" onclick="doRate('9', '{$id}'); return false;">{$lang['rat_9']}</option>
<option value="{$lang['rat_8']}" onclick="doRate('8', '{$id}'); return false;">{$lang['rat_8']}</option>
<option value="{$lang['rat_7']}" onclick="doRate('7', '{$id}'); return false;">{$lang['rat_7']}</option>
<option value="{$lang['rat_6']}" onclick="doRate('6', '{$id}'); return false;">{$lang['rat_6']}</option>
<option value="{$lang['rat_5']}" onclick="doRate('5', '{$id}'); return false;">{$lang['rat_5']}</option>
<option value="{$lang['rat_4']}" onclick="doRate('4', '{$id}'); return false;">{$lang['rat_4']}</option>
<option value="{$lang['rat_3']}" onclick="doRate('3', '{$id}'); return false;">{$lang['rat_3']}</option>
<option value="{$lang['rat_2']}" onclick="doRate('2', '{$id}'); return false;">{$lang['rat_2']}</option>
<option value="{$lang['rat_1']}" onclick="doRate('1', '{$id}'); return false;">{$lang['rat_1']}</option>
</select>

но он не работает в Chrome (работает в лисе и опере)

копался в сети понял что для option нельзя использовать onclick

его можно попробовать сменить через использование jQuery

Нужно менять onClick() на onChange(this.value)

Подскажите пожалуйста как правильнее всего это сделать в этом примере

спасибо.

VDS & Dedicated хостинг в США (http://coolvds.com/pl.php?124)
palladin_jedi
На сайте с 13.07.2010
Offline
71
#4
psqwer:
Нужно менять onClick() на onChange(this.value)

onChange работает в select'е.

В событии нужно проверить текущее значение и делать дальше что необходимо.

H
На сайте с 09.10.2012
Offline
11
#5

Странный код)

у вас {id} фиксированный параметр или для каждого option разный?

Тут просто куча решений, в которых не надо навешивать обработчики на каждый option.

$('select').change(function(){

//берем id. если фиксированный, проще создать скрытый input (type=hidden), если разный для каждого option - можно вынести его в класс для каждого option (class='optionid_{$id}'), и забирать его оттуда
var id = $('input[name=myid]').val();
//первый параметр к вашей функции doRate. если это просто порядковый номер, можно банально "посчитать" option'ы по убыванию. либо, опять же, засунуть их в class option'а
var first_param = ...;
doRate(first_param,id);
});

В общем, присмотритесь, какие параметры вам действительно нужны, и как с наименьшим количеством кода их передать в вашу функцию, а обработчик события навешивайте на сам select, на option'ы - это извращение)

P
На сайте с 09.01.2010
Offline
26
#6

спасибо будем думать :(

uberchel
На сайте с 16.01.2010
Offline
70
#7

Держите:


<select onChange="doRate(this.value, {id}); return false;">
<option value="{$lang['rat_10']}">{$lang['rat_10']}</option>
<option value="{$lang['rat_9']}">{$lang['rat_9']}</option>
<option value="{$lang['rat_8']}">{$lang['rat_8']}</option>
<option value="{$lang['rat_7']}">{$lang['rat_7']}</option>
<option value="{$lang['rat_6']}">{$lang['rat_6']}</option>
<option value="{$lang['rat_5']}">{$lang['rat_5']}</option>
<option value="{$lang['rat_4']}">{$lang['rat_4']}</option>
<option value="{$lang['rat_3']}">{$lang['rat_3']}</option>
<option value="{$lang['rat_2']}">{$lang['rat_2']}</option>
<option value="{$lang['rat_1']}">{$lang['rat_1']}</option>
</select>

Как я понимаю эта переменная передает число {$lang['rat_10']} , тогда все как надо, а если даже и не число, то пропарсить нет проблем:


<script type="text/javascript">
function doRate(a) {
var raing = a.macth(/\d/ig); //парсим только число
alert(raing );
}
</script>
P
На сайте с 09.01.2010
Offline
26
#8

uberchel,

эта форма по выставлению оценок для публикаций сайта

то есть в созданной форме выпадающий список оценок при выборе которых передается выбранная оценка как ('1', '{$id}')

{$lang['rat_1']} это просто текстовое описание выбора через языковой файл

в моем варианте она работает веде кроме как в хроме и сафари

в вашем при выборе оценки ничего не происходит

то есть никуда ничего не передается к сожалению

Но в любом случае спасибо за попытку помочь!

m0le[x]
На сайте с 08.03.2009
Offline
102
#9

Снова обращаюсь к мастерам jquery со своим слайдером.

http://goo.gl/Onj0A - вот сам слайдер

http://goo.gl/XMQlG - вот js

Нужно сделать, что бы при наведении на одну из вкладок она выезжала и фиксировалась, при наведении на другую, предыдущая сворачивалась, а новая открывалась.

Запутался в этих функциях, как поставить mouseover и какое условие, что бы сделать, то что выше написал.

$tab.mouseover(function(){

if($slider.hasClass('active')){
slickClose();
} else {
slickOpen();
}
});

$(linkOpen).click(function(e){
slickOpen();
e.preventDefault();
});

$(linkClose).click(function(e){
if($slider.hasClass('active')){
slickClose();
}
e.preventDefault();
});

$(linkToggle).click(function(e){
if($slider.hasClass('active')){
slickClose();
} else {
slickOpen();
}
e.preventDefault();
});

Может кто хоть за вознаграждение поможет с этим, буду рад любой помощи.

palladin_jedi
На сайте с 13.07.2010
Offline
71
#10
m0le[x:
;11116723]Запутался в этих функциях, как поставить mouseover и какое условие, что бы сделать, то что выше написал.

Я бы присвоил всем табам айдишники, а потом проверял высоту у всех, кроме того, на который в текущий момент указатель наведен. Если высота больше базовой - сворачивать.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий