-1

I am working with shopify website, in that sidebar menu, need work like this link http://jsfiddle.net/wasimkazi/CGsJH/2/

I mean when click an one link, another link should be hide(if this link alreay opened).

This is bootstrap used:

!function ($) { "use strict"; // jshint ;_; /* COLLAPSE PUBLIC CLASS DEFINITION * ================================ */ var Collapse = function (element, options) { this.$element = $(element) this.options = $.extend({}, $.fn.collapse.defaults, options) if (this.options.parent) { this.$parent = $(this.options.parent) } this.options.toggle && this.toggle() } Collapse.prototype = { constructor: Collapse , dimension: function () { var hasWidth = this.$element.hasClass('width') return hasWidth ? 'width' : 'height' } , show: function () { var dimension , scroll , actives , hasData if (this.transitioning) return dimension = this.dimension() scroll = $.camelCase(['scroll', dimension].join('-')) actives = this.$parent && this.$parent.find('> .accordion-group > .in') if (actives && actives.length) { hasData = actives.data('collapse') if (hasData && hasData.transitioning) return actives.collapse('hide') hasData || actives.data('collapse', null) } this.$element[dimension](0) this.transition('addClass', $.Event('show'), 'shown') $.support.transition && this.$element[dimension](this.$element[0][scroll]) } , hide: function () { var dimension if (this.transitioning) return dimension = this.dimension() this.reset(this.$element[dimension]()) this.transition('removeClass', $.Event('hide'), 'hidden') this.$element[dimension](0) } , reset: function (size) { var dimension = this.dimension() this.$element .removeClass('collapse') [dimension](size || 'auto') [0].offsetWidth this.$element[size !== null ? 'addClass' : 'removeClass']('collapse') return this } , transition: function (method, startEvent, completeEvent) { var that = this , complete = function () { if (startEvent.type == 'show') that.reset() that.transitioning = 0 that.$element.trigger(completeEvent) } this.$element.trigger(startEvent) if (startEvent.isDefaultPrevented()) return this.transitioning = 1 this.$element[method]('in') $.support.transition && this.$element.hasClass('collapse') ? this.$element.one($.support.transition.end, complete) : complete() } , toggle: function () { this[this.$element.hasClass('in') ? 'hide' : 'show']() } } /* COLLAPSIBLE PLUGIN DEFINITION * ============================== */ $.fn.collapse = function (option) { return this.each(function () { var $this = $(this) , data = $this.data('collapse') , options = typeof option == 'object' && option if (!data) $this.data('collapse', (data = new Collapse(this, options))) if (typeof option == 'string') data[option]() }) } $.fn.collapse.defaults = { toggle: true } $.fn.collapse.Constructor = Collapse /* COLLAPSIBLE DATA-API * ==================== */ $(document).on('click.collapse.data-api', '[data-toggle=collapse]', function (e) { var $this = $(this), href , target = $this.attr('data-target') || e.preventDefault() || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 , option = $(target).data('collapse') ? 'toggle' : $this.data() $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed') $(target).collapse(option) }) }(window.jQuery); 
9
  • Check this Commented Dec 24, 2014 at 9:28
  • may i know, where i can view source file? @anpsmn Commented Dec 24, 2014 at 9:34
  • You can scroll down on the link given, you will find the html snippet for accordion. Apply the classes as it is and bootstrap will do the rest Commented Dec 24, 2014 at 9:36
  • sorry i am struggling to add corresponding classes in my code? @anpsmn Commented Dec 24, 2014 at 9:39
  • Here is a fiddle of the accordion Commented Dec 24, 2014 at 9:42

1 Answer 1

0

Since you can't modify the HTML to make it an accordion, you can use the show event for collapse and hide the already shown section.

$(document).ready(function () { $('.collapse').on('show.bs.collapse', function () { $('.collapse.in').collapse('hide'); }) }) 

See fiddle

Sign up to request clarification or add additional context in comments.

10 Comments

Do you have a custom js file? If yes then add the above code in that.
@npsmn: after i get 15 reputation., i will give +1.. Thanks.
As you said that modals are all using click function, when we click the button, it will show that pop up right?.. i need like, when enter the site name in the address bar, it will show pop up center of the site..
Modals can be called directly by show method or you can trigger the button click. Go through the documentation. Also you will find many examples if you do a search.
may i know, how can i add this one: $('#myModal').on('shown.bs.modal', function () { $('#myInput').focus() }) on my site crap-3.myshopify.com.. can you help me?
|

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.