molek55
3.05.2010, 22:05:29
Witam
Posiadam skrypt strony z filmami. Jest tam możliwość dodania podkategorii. Rozwijają się one podczas najechania na kategorię główną i znikają po zjechaniu myszką na inny element. Jest to strasznie denerwujące. Proszę o pomoc. Nie jestem pewny ale możliwe że w tym fragmencie php jest wiersz za to odpowiedzialny. Chciałbym żeby podkategorie były ciągle rozwinięte lub żeby rozwijały się po kliknięciu.
// subcategories
$subcats_count = 0;
$subcats = '';
foreach($categories_array as $cat_id2 => $subcat_arr)
{
if($subcat_arr['parent_id'] == $cat_id && ($cat_id2 != $cat_id))
{
$subcats_count++;
if(_SEOMOD == 1)
{
$caturl = _URL."/browse-".$subcat_arr['tag']."-videos-1-date.html";
}
else
{
$caturl = _URL."/category.php?cat=".$subcat_arr['tag'];
}
if($subcat_arr['id'] == $selected)
{
$subcats .= "<li class=\"selectedsubcat\"><a href=\"".$caturl."\">".$subcat_arr['name']."</a></li>";
}
else
{
$subcats .= "<li><a href=\"".$caturl."\">".$subcat_arr['name']."</a></li>";
}
}
}
// href
if(_SEOMOD == 1)
{
$caturl = _URL."/browse-".$cat_arr['tag']."-videos-1-date.html";
}
else
{
$caturl = _URL."/category.php?cat=".$cat_arr['tag'];
}
// li
$li_item = "";
if($cat_arr['id'] == $selected)
{
$li_item .= '<li class="selectedcat"';
}
else
{
$li_item .= '<li';
}
$li_item .= '><a href="'.$caturl.'">'.$cat_arr['name'].'</a>';
if($subcats_count > 0)
{
$li_item .= '<ul class="hidden_li">'.$subcats.'</ul>';
}
$li_item .= '</li>';
// append
$cats .= $li_item;
}
}
// wrapper
$cats = '<ul id="ul_categories">'.$cats.'</ul>';
return $cats;
}
function list_subcategories($parent = '0', $selected)
{
if ($parent == '')
{
return '';
}
$subcategories = '';
$url = '';
$sql = "SELECT *
FROM pm_categories
WHERE parent_id = '". $parent ."'
ORDER BY name ASC";
if ( ! $result)
{
return '';
}
{
if (_SEOMOD == 1)
{
$url = _URL."/browse-".$row['tag']."-videos-1-date.html";
}
else
{
$url = _URL."/category.php?cat=".$row['tag'];
}
$subcategories .= ($row['id'] == $selected) ? '<li class="selectedcat">' : '<li>';
$subcategories .= '<a href="'. $url .'">'. $row['name'] .' ('. $row['total_videos'] .')</a>';
$subcategories .= '</li>';
}
return $subcategories;
}
tehaha
3.05.2010, 22:12:26
Taki efekt zwijania/rozwijania to javascript, sugerując się nazewnictwem zgaduję, że efekt jest przypisany do klasy hidden_li -> <ul class="hidden_li">, zapewne w pliku css też masz ustawione dlatego elementu dispaly:none
najlepiej usuń ten efekt w javascript
molek55
3.05.2010, 23:04:27
Usunąłem z css display:none oraz w js miałem //theform.style.display='none'; również usunąłem i nic. Jest tak jak było.
krzysztof_kf
3.05.2010, 23:08:12
Możesz podać url do strony z problemem ?
molek55
4.05.2010, 12:16:50
Ta strona nie jest umieszczona jeszcze do wglądu publicznego, ewentualnie na pw wyślę.
krzysztof_kf
4.05.2010, 13:02:55
Plik jquery.hover.js szukaj linijki na samym końcu
.mouseout(handleHover);};})(jQuery);
zmień na
.mouseout(handlerInOut);};})(jQuery);
efekt ci daje trwałe rozwinięcie menu ale więcej już ci ja osobiście nie pomogę ;/
molek55
4.05.2010, 13:58:14
(function($){$.fn.hoverIntent=function(f,g){var cfg={sensitivity:7,interval:0,timeout:100};cfg=$.extend(cfg,g?{over:f,out:g}:f);var cX,cY,pX,pY;var track=function(ev){cX=ev.pageX;cY=ev.pageY;};var compare=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);if((Math
.abs(pX-cX)+Math.abs(pY-cY))<cfg.sensitivity){$(ob).unbind("mousemove",track);ob.hoverIntent_s=1;return cfg.over.apply(ob,[ev]);}else{pX=cX;pY=cY;ob.hoverIntent_t=setTimeout(function()
{compare(ev,ob);},cfg.interval);}};var delay=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);ob.hoverIn
tent_s=0;return cfg.out.apply(ob,[ev]);};var handleHover=function(e){var p=(e.type=="mouseover"?e.fromElement:e.toElement)||e.relatedTarget;while(p&&p!=this){try{p=p.parentNode;}catch(e){p=this;}}if(p==this){return false;}var ev=jQuery.extend({},e);var ob=this;if(ob.hoverIntent_t){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);}if
(e.type=="mouseover"){pX=ev.pageX;pY=ev.pageY;$(ob).bind("mousemove",track);if(ob.hoverIntent_s!=1){ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}}
else{$(ob).unbind("mousemove",track);if(ob.hoverIntent_s==1){ob.hoverIntent_t=setTimeout(function(){dela
y(ev,ob);},cfg.timeout);}}};return this.mouseover(handleHover).mouseout(handleHover);};})(jQuery);
Mam coś takiego. Wie ktoś tak zmienić tą funkcję aby podkategorie były rozwinięte od razu.
Zmiana handleHover na handlerInOut nic nie zmieniła.
krzysztof_kf
4.05.2010, 14:06:33
zmień jeszcze raz na samym końcu z HandleHover NA
.mouseout(handlerInOut);};})(jQuery);
i odśwież stronę . i powiedz kiedy to zapisałeś luknę
molek55
4.05.2010, 14:15:47
już zmieniłem
krzysztof_kf
4.05.2010, 14:17:54
eee? tylko ostatnie nie obydwa tylko .mouseout

!! co ja ci pokazałem patrzymy
tzw tak to ma wyglądać
mouseover(handleHover).mouseout(handlerInOut);};})(jQuery);
molek55
4.05.2010, 16:36:19
no teraz tak mam
w sumie już jest ok, jeżeli nie może być od razu rozwinięte
Dzięki za pomoc
Z menu jest już ok lecz teraz zauważyłem, że tabela "Filmy ogladane teraz" nie działa jak powinna.
krzysztof_kf
4.05.2010, 17:01:19
Cytat(molek55 @ 4.05.2010, 17:36:19 )

no teraz tak mam
w sumie już jest ok, jeżeli nie może być od razu rozwinięte
Dzięki za pomoc
Z menu jest już ok lecz teraz zauważyłem, że tabela "Filmy ogladane teraz" nie działa jak powinna.
To znaczy co konkretnie ? co jest nie tak .
molek55
4.05.2010, 20:02:53
Filmy które są aktualnie oglądane pokazuję się poniżej tabelki w której do tej pory były.
krzysztof_kf
4.05.2010, 20:20:56
A co mieszałeś w css ? to nie jest na pewno wina javascript tylko coś zmąciłeś w css .
molek55
5.05.2010, 19:11:19
dispaly:none jedynie usunąłem
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.