0

考虑我有两个小部件。

$.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情况或任何其他解决方案。

注意:我的问题是否正确?

4

2 回答 2

0

您的帖子中缺少很多信息,但这是一种避免“if else”声明的方法。

<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>
于 2018-01-11T14:19:55.227 回答
0

并非如此,您必须决定要调用哪个方法,因此您必须使用if...else if构造或至少使用三元运算符。

这是一个减少语句数量的示例:

var fName = isCar ? "car" : "bike";
$( "div" )[fName]();
$( "div" )[fName]('random');

在此示例中,我假设 if isCaris false isBikeistrue这与您的示例不完全相同。

于 2018-01-11T13:17:08.270 回答