dropdown_count = 0; (function ( $ ) { $.fn.dropdown = function(options){ var element = $(this); var opts = $.extend({}, $.fn.dropdown.defaults, options) element.each(function(){ build($(this), opts); }) $('body').on('click', '.dropdown', function(){ //alert(3) if ( $(this).hasClass('animate') == false ) { animate($(this)) } }) $('body').on('click', '.dropdown ul li a', function(){ setValue($(this).parents('.dropdown'), $(this).parent('li').index()) }) return { blue: function(){ element.css('color', 'blue') } } }; $.fn.dropdown.defaults = { background: "#e5e5e5", onOpen_background: "#fff", placeholder_color: "#000", link_color: "#000" } function build(element, opts){ var placeholder = element.attr('data-placeholder') var id = element.attr('id') var options = element.children('option') var selected = false; var classes = "dropdown"; var options_html = ''; var background = opts["background"] var onOpen_background = opts["onOpen_background"] var placeholder_color = opts["placeholder_color"] var link_color = opts["link_color"] options.each(function(){ if ( $(this).attr('selected') == "selected") { selected = $(this).text() } options_html += '
  • '+ $(this).text() +'
  • '; }) if ( selected !== false ) { classes += ' hasValue'; } if (typeof id !== typeof undefined && id !== false) { id_html = id } else { id_html = 'dropdown_' + dropdown_count; $(element).attr('id', id_html) } var dropdown_html = '
    '; dropdown_html += '
    ' dropdown_html += '
    ' dropdown_html += '
    ' if ( selected !== false ) { dropdown_html += ''+ selected +''; } dropdown_html += ''+ placeholder +'' dropdown_html += ''+ icon() +'' dropdown_html += '
    ' dropdown_html += '
    '; dropdown_html += '
    '; dropdown_html += '
    '; $(dropdown_html).insertAfter(element) //$('#euler_' + id_html).css("height", $('#euler_' + id_html).outerHeight() - $('#euler_' + id_html).find('.back_face').outerHeight() ) element.hide() } function animate(element){ if ( $('.dropdown.animate').length > 0 ) { deanimate($('.dropdown').not(element)) var timeout = 600 } else { var timeout = 10 } setTimeout(function(){ setTimeout(function(){ var back_face = element.find('.back_face') var bg = element.find('> .bg') bg.css({ "height" : element.outerHeight() + back_face.outerHeight() }) back_face.css({ "margin-top" : $(element).outerHeight() }) element.addClass('placeholder_animate') setTimeout(function(){ element.addClass('placeholder_animate2') element.addClass('animate') element.addClass('animate2') }, 100) }, timeout) }, 200) } function deanimate(dropdowns){ if (dropdowns == null ) { var dropdown = $('.dropdown') } else { var dropdown = dropdowns } setTimeout(function(){ dropdown.removeClass('animate2') setTimeout(function(){ dropdown.removeClass('animate') dropdown.children(".bg").css({ "height" : 0 }) dropdown.removeClass('placeholder_animate2') setTimeout(function(){ dropdown.removeClass('placeholder_animate') },100) }, 200) }, 400) } function setValue(euler_dropdown, value_index){ var id = euler_dropdown.attr('data-select') var select = document.getElementById(id); var option_value = $(select).children('option').eq(value_index) var callback = $(select).attr('data-callback') $(select).val(option_value.val()) $(euler_dropdown).find('.current_value').remove() $(euler_dropdown).find('.front_face .content').prepend(''+ option_value.text() + '') $(euler_dropdown).addClass('hasValue') if (typeof callback !== typeof undefined && callback !== false) { window[callback](option_value.val()) } setTimeout(function(){ deanimate() }, 100) } function icon(){ return ''; } function change(elem){ elem.css('color', 'green') } }( jQuery )); function hello(value){ console.log("hello world! the selected value is " + value) }