Как создать экземпляр виджета в 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 является falseisBike является true что не совсем похоже на ваш пример.

Другие вопросы по тегам