This repository was archived by the owner on Sep 4, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 57
Expand file tree
/
Copy pathjquery.mobile.dropdown.js
More file actions
91 lines (72 loc) · 2.52 KB
/
jquery.mobile.dropdown.js
File metadata and controls
91 lines (72 loc) · 2.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
/* Copyright 2012 Research In Motion Limited.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.License
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
(function($) {
$.widget("mobile.dropdown", $.mobile.widget, {
options: {
initSelector: ""//":jqmData(role='dropdown')"
},
_init: function() {
},
_create: function() {
var self = this,
parent = $(this.element).parent(),
collapse = $('<div data-role="collapsible" data-content-theme=' + $.mobile.getInheritedTheme( parent, "c" ) + ' data-collapsed="true" data-iconpos="right">'),
select = $(this.element),
list = $('<ul data-role="listview"></ul>').appendTo(collapse);
this.header = $('<h1></h1>').appendTo(collapse);
select.find('option').each( function (i,el){
var item = $(document.createElement('li')).text($(el).text());
if($(el).attr("selected") === "selected") {
self._setHeader($(el).text());
item.addClass("checked");
}
list.append(item);
});
select.css("display", "none");
$("<div>").attr("data-enhance", "false").wrap(select);
parent.after(collapse);
collapse.parent().trigger("create");
parent.remove();
setTimeout(function(){
select.appendTo(collapse);
}, 0);
list.bind("vclick", function(event){
var item = $(event.target);
self._setHeader(item.text());
$(".checked").removeClass("checked");
item.addClass("checked");
select.prop('value', select.find('option:contains("' + item.text() + '")').attr('value'));
select.trigger("change");
collapse.trigger('collapse');
});
},
_setHeader: function(text) {
var headerText = this.header.find('.ui-btn-text'),
headerStatusText = headerText.find('.ui-collapsible-heading-status');
//Check if the content has been enhanced yet
if(headerText.length === 0){
this.header.text(text);
} else {
headerText.text(text).append(headerStatusText);
}
},
refresh: function() {
}
});
$( document ).unbind( "selectmenubeforecreate" );
$( document ).bind( "selectmenubeforecreate", function(event){
$( event.target ).dropdown();
} );
})(jQuery);