![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 13.12.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam, w wyszukiwarce umieściłem rozwijaną opcje przeszukiwanych zasobów strony. Problem w tym, że co przeładowywuje stronę to jest taki efekt:
http://youtu.be/vhyGWv8C284 jest to bardzo denerwujące... czy jest jakaś możliwość zapobiec temu ? Kod /*
* styleSelect - apply style to a select box * (http://www.8stream.com) * * Copyright (c) 2009 Siim Sindonen, 8STREAM <siim@8stream.com> * Dual licensed under the MIT and GPL licenses: * http://www.opensource.org/licenses/mit-license.php * http://www.gnu.org/licenses/gpl.html * * Requires jQuery version: >= 1.3.2 * $Version: 1.2.3 | 22.09.2009 */ (function($){ $.fn.styleSelect = function(options){ var tabindex = 1; var opts = $.extend({}, $.fn.styleSelect.defaults , options); //set tabindex $('input,select,textarea,button').each(function() { var input = $(this); if (!input.attr('tabindex')){ input.attr('tabindex', tabindex); tabindex++; } }); return this.each(function(){ mainSelect = $(this); var mainId = mainSelect.attr('name'); var styledTabIndex = mainSelect.attr('tabindex'); var date = new Date; var selectId = 'selectbox_'+mainId+date.getTime(); //Hidde select box mainSelect.hide(); //Main container var mainContainer = $('<div tabindex="'+styledTabIndex+'"></div>').css({position : 'relative'}) .addClass(opts.styleClass) .attr('id', selectId) .insertBefore(mainSelect); //Options container var subContainer = $('<ul></ul>').css({'position' : 'absolute', 'z-index' : '100'-styledTabIndex, 'top' : opts.optionsTop, 'left' : opts.optionsLeft}) .appendTo($(mainContainer)) .hide(); //Generate options list var optionsList = ""; mainSelect.find('option').each(function(){ optionsList += '<li id="'+$(this).val()+'"'; if($(this).attr('class')) optionsList += ' class="'+$(this).attr('class')+'" '; optionsList += '>'; optionsList += '<span style="display: block;"'; if ($(this).attr('selected')) optionsList += ' class="selected" '; optionsList += '>'; optionsList += $(this).text(); optionsList += '</span>'; optionsList += '</li>'; }); subContainer.append(optionsList); checkSelected(opts.styleClass,opts.optionsWidth); //Delete border on click $('#'+selectId).focus(function(){ $(this).blur(); }); //Show otions $('#'+selectId).click(function(){ $(this).find('ul').slideToggle(opts.speed); }); //On click $('#'+selectId+' li').click(function(){ doSelection($(this)); }); //Keyboard support $('#'+selectId).keydown(function(event){ var active = $(this).find('.selected').parent(); if (event.keyCode == 40 || event.keyCode == 39 ){ doSelection(active.next()); } if (event.keyCode == 37 || event.keyCode == 38 ){ doSelection(active.prev()); } if (event.keyCode == 13 || event.keyCode == 0){ $(this).find('ul').slideToggle(opts.speed); } if (event.keyCode == 9){ $(this).find('ul').hide(opts.speed); } }); //Do selection var doSelection = function(item){ item.siblings().find("span").removeClass('selected'); item.find("span").addClass('selected'); var selectedItem = item.attr('id'); var realSelector = $('select[name="'+mainId+'"]'); realSelector.siblings().selected = false; realSelector.find('option[value="'+selectedItem+'"]').attr('selected','selected'); realSelector.trigger(opts.selectTrigger); checkSelected(opts.styleClass,opts.optionsWidth); } $('#'+selectId).click(function(e) { e.stopPropagation(); }); $(document).click(function() { $('#'+selectId+' ul').hide(); }); }); } //Selected items check function checkSelected(mainClass,mainWidth){ $('.'+mainClass).each(function(){ var elementList = $(this).find('ul'); $(this).find('span').each(function(){ var spanClass = $(this).attr("class"); if (spanClass == "passiveSelect" || spanClass == "activeSelect") $(this).remove(); }); var selectedName = $(this).find('.selected'); $('<span></span>').text(selectedName.text()) .attr('id', selectedName.parent().attr('id')) .addClass('passiveSelect') .appendTo($(this)); if (mainWidth === 0){ $(this).css({'width' : elementList.width()}); } }); $('.'+mainClass+' span').each(function(){ if ($(this).attr('id')){ $(this).removeClass(); $(this).addClass('activeSelect'); } }); } $.fn.styleSelect.defaults = { optionsTop: '26px', optionsLeft: '0px', optionsWidth: 0, styleClass: 'selectMenu', speed: 0, selectTrigger: 'change' }; })(jQuery); Ten post edytował Mateusz_M 23.12.2011, 23:36:52 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 175 Pomógł: 0 Dołączył: 19.09.2009 Ostrzeżenie: (10%) ![]() ![]() |
Daj link do strony, bo to problem wyświetlania, nie teoryzowania na temat kodu.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 13.12.2011 Ostrzeżenie: (0%) ![]() ![]() |
Niestety nie mogę podać linka strona jeszcze nie jest publicznie dostępna. Może jakieś wskazówki co może być przyczyną? ewentualnie jakaś zasada jest jak obchodzić się w takiej syutacji.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 175 Pomógł: 0 Dołączył: 19.09.2009 Ostrzeżenie: (10%) ![]() ![]() |
Strona działa bez JS'a?
Bo jeżeli nie, to możesz tego selecta ukryć CSS'em. Jeżeli tak, to podmień może: Cytat (function($){ na: Cytat $(document).ready(function() { lub ew. do tego ready, wczytuj funkcje które mają się dziać po załadowaniu strony. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 00:29 |