Как создать экземпляр виджета в jQuery
Считайте, что у меня есть два виджета.
$.widget( "custom.car", {
options: {
name: ''
},
_create: function() {
this.options.name = 'car'
},
random: function( event ) {
console.log(this.options.name);
},
clear: function() { console.log('Clear'); }
});
$.widget( "custom.bike", {
options: {
name: ''
},
_create: function() {
this.options.name = 'bike'
},
random: function( event ) {
console.log(this.options.name);
},
clear: function() { console.log('Clear'); }
});
isCar
а также isBike
основан на пользовательском вводе.
if(isCar) {
$( "div" ).car();
$( "div" ).car('random');
} else if(isBike) {
$( "div" ).bike();
$( "div" ).bike('random');
}
Если я позвоню random
метод в каком-то месте, где я напишу if
состояние. Если какое-либо возможное решение, чтобы избежать if
условие или любое другое решение.
Примечание: мой вопрос правильный или нет?
2 ответа
В вашем сообщении отсутствует много информации, но есть способ избежать заявления "если еще".
<form id="selection">
<input id="car-radio" type="radio" value="car" checked> Car
<input id="bike-radio" type="radio" value="bike"> Bike
</form>
<script type="text/javascript">
var carFunc = function() {
isCar = true;
isBike = false;
$( "div" ).car();
$( "div" ).car('random');
}
var bikeFunc = function() {
isCar = false;
isBike = true;
$( "div" ).bike();
$( "div" ).bike('random');
}
$("#selection").on('click', '#car-radio', carFunc);
$("#selection").on('click', '#bike-radio', bikeFunc);
</script>
Не совсем, вам придется решить, какой метод вы хотите вызвать, поэтому вам придется использовать if...else if
построить или хотя бы троичный оператор.
Вот пример, который уменьшает количество операторов:
var fName = isCar ? "car" : "bike";
$( "div" )[fName]();
$( "div" )[fName]('random');
В этом примере я предполагаю, что если isCar
является false
isBike
является true
что не совсем похоже на ваш пример.