Как обрабатывать событие изменения jQuery UI Selectmenu
я использую jQuery ui выберите меню с выборочная визуализация
как я могу справиться с change
событие ?
пробовал
$('#filesA').on('change', function() {
alert( 'x');
});
но он не работает с jQuery UI Selectmenu
а также я стараюсь
$( "#filesA" ).selectmenu({
change: function( event, ui ) {}
});
он работает, но он создает другой экземпляр меню выбора !!
мой код js
$( document ).ready(function() {
$( "#filesA" ).selectmenu({ change: function( event, ui ) { alert('x'); }});
$.widget( "custom.iconselectmenu", $.ui.selectmenu, {
_renderItem: function( ul, item ) {
var li = $( "<li>", { text: item.label } );
if ( item.disabled ) {
li.addClass( "ui-state-disabled" );
}
$( "<span>", {
style: item.element.attr( "data-style" ),
"class": "ui-icon " + item.element.attr( "data-class" )
})
.appendTo( li );
return li.appendTo( ul );
}
});
$( "#filesA" )
.iconselectmenu()
.iconselectmenu( "menuWidget" )
.addClass( "ui-menu-icons" );
});
и мой HTML код
<label class="langLabel" for="filesA">Select your language:</label>
<select name="filesA" id="filesA">
<option value="lan1">Test Lang1</option>
<option value="lan2">Test Lang2</option>
<option value="lan3">Test Lang3</option>
<option value="lan4">Test Lang4</option>
<option value="lan5">Test Lang5</option>
</select>
5 ответов
просто измените триггер 'change'
to 'selectmenuchange'
$('#filesA').on('selectmenuchange', function() {
alert( 'x');
});
Взгляните сюда:http://jsfiddle.net/JLVSM/
просто измените код на:
$( "#filesA" ).selectmenu({ change: function( event, ui ) { alert('x'); }});
$.widget( "custom.iconselectmenu", $.ui.selectmenu, {
_renderItem: function( ul, item ) {
var li = $( "<li>", { text: item.label } );
if ( item.disabled ) {
li.addClass( "ui-state-disabled" );
}
$( "<span>", {
style: item.element.attr( "data-style" ),
"class": "ui-icon " + item.element.attr( "data-class" )
})
.appendTo( li );
return li.appendTo( ul );
},
});
$( "#filesA" ).addClass( "ui-menu-icons" );
или, более конкретно...
$(function() {
$.widget( "custom.iconselectmenu", $.ui.selectmenu, {
_renderItem: function( ul, item ) {
var li = $( "<li>", { text: item.label } );
if ( item.disabled ) {
li.addClass( "ui-state-disabled" );
}
$( "<span>", {
style: item.element.attr( "data-style" ),
"class": "ui-icon " + item.element.attr( "data-class" )
})
.appendTo( li );
return li.appendTo( ul );
}
});
$( "#filesB" )
.iconselectmenu()
.iconselectmenu( "menuWidget" )
.addClass( "ui-menu-icons customicons" );
$('#filesB').iconselectmenu({
change: function( event, ui) {
alert('something has changed');
}
});
});
Я решил так:
$.widget( "custom.iconselectmenu", $.ui.selectmenu, {
_renderItem: function( ul, item ) {
var li = $( "<li>", { text: item.label } );
if ( item.disabled ) {
li.addClass( "ui-state-disabled" );
}
$( "<span>", {
style: item.element.attr( "data-style" ),
"class": "ui-icon " + item.element.attr( "data-class" )
})
.appendTo( li );
return li.appendTo( ul );
},});
$("#filesA").iconselectmenu({ change: function( event, ui ) { alert("Hi"); s}}).iconselectmenu( "menuWidget" ).addClass( "ui-menu-icons" );
У меня была та же проблема. Преодолел его в конце концов с iconselectmenu вместо selectmenu
$( "#filesA" ).iconselectmenu({ change: function( event, ui ) { alert('x'); }});