Jump to content
  • 0

Помогите немного переделать код


ilyas
 Share

Question

Вот этот аккордеон я скопировал с одного сайта, его код на моей странице конфликтует с другими скриптами, написан он как-то немного замудренно, не могли бы переделать его на обычный $(document).ready вместо безимянной функции.

(function() {    new KinTooltip('js_content');    var title = $('.js_title'),    content = $('.js_content');    content.on('click', '.js_title', onTownsClick);    function onTownsClick() {        if ($(this).parent().hasClass('towns_open')) {        close();        } else {        open($(this));        }    }    function open(e) {        close();        e.next().slideDown(200);        e.parent().addClass('towns_open');    }    function close() {        title.each(function(){        $(this).parent().removeClass('towns_open');        $(this).next().slideUp(200);        });    }})();

А вот разметка аккордеона

<div id="js_content">	<div class="towns">		<h4 class="towns__title js_title">Город</h4>		<div class="scoreboard" style="display:none;">			<table class="scoreboard__table">			Контент отображаемой таблицы			</table>		</div>	</div>	<div class="towns">		<h4 class="towns__title js_title">Город</h4>		<div class="scoreboard" style="display:none;">			<table class="scoreboard__table">			Контент отображаемой таблицы			</table>		</div>	</div>	<div class="towns">		<h4 class="towns__title js_title">Город</h4>		<div class="scoreboard" style="display:none;">			<table class="scoreboard__table">			Контент отображаемой таблицы			</table>		</div>	</div></div>
Link to comment
Share on other sites

13 answers to this question

Recommended Posts

  • 0

И что тут мудрёного... безымянная функция - в скобках  используется для того, чтобы переменные внутри нее действовали только внутри нее.

()  - нужны для того чтобы функция вызвалась сразу 

 

 

сам код работает так же как если бы этой функции небыло, т.е. исполняется в момент загрузки.  

Невижу сложностей чтобы вам самому заменить на то что вы  хотите

Link to comment
Share on other sites

  • 0
помогите мне очень нада!!!

А "пожалуйста"? Что-то подсказывает мне, что за эту работу вы брались не бесплатно, ещё и сроки горят.

Я не профи, я только учусь, поэтому попробую как-нибудь так.

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

Для остальных случаев есть разделы "Коммерческие услуги" и "Сделайте мне бесплатно".

Link to comment
Share on other sites

  • 0

в файербаге выводится ошибка в консоли

TypeError: content.on is not a functioncontent.on('click', '.js_title', function() {

Начинает работать только если рядом подключу еще одну jquery,
Можете под эту разметку вот этот скрипт адаптировать? я пробовал вставлять классы но ничего не заработало

<div id="js_content">	<div class="towns">		<h4 class="towns__title js_title">Город</h4>		<div class="scoreboard" style="display:none;">			<table class="scoreboard__table">			Контент отображаемой таблицы			</table>		</div>	</div>	<div class="towns">		<h4 class="towns__title js_title">Город</h4>		<div class="scoreboard" style="display:none;">			<table class="scoreboard__table">			Контент отображаемой таблицы			</table>		</div>	</div>	<div class="towns">		<h4 class="towns__title js_title">Город</h4>		<div class="scoreboard" style="display:none;">			<table class="scoreboard__table">			Контент отображаемой таблицы			</table>		</div>	</div></div>

 

$(document).ready(function(){    $('#celebs ul > li ul')    .click(function(event){    event.stopPropagation();    })    .filter(':not(:first)')    .hide();    $('#celebs ul > li').click(function(){        var selfClick = $(this).find('ul:first').is(':visible');        if(!selfClick) {            $(this)            .parent()            .find('> li ul:visible')            .slideToggle("fast");        }        $(this)        .find('ul:first')        .stop(true, true)        .slideToggle("fast");    });});
Edited by ilyas
Link to comment
Share on other sites

  • 0

Catherine вам огромное спасибо за помощь!!!

Решил свой вопрос таким кодом, у меня на сайте подключена jquery 1.5 и поэтому многие методы не работали, а еще аккордеон лежит на одно странице а эта страница подключается в двух страницах (инклюдится), затем в теле страницы написал стили чтобы везде одинаково выглядел этот аккордеон

$(document).ready(function(){				$('#celebs ul > li').click(function(){			var selfClick = $(this).find('ul:first').is(':visible');			if(!selfClick) {			$(this)			.parent()			.find('> li ul:visible')			.slideToggle("fast");			}			$(this)			.find('ul:first')			.stop(true, true)			.slideToggle("fast");		});	}); 
 
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy