【问题标题】:How to create a widget instance in jQuery如何在 jQuery 中创建小部件实例
【发布时间】:2018-06-20 19:58:38
【问题描述】:

假设我有两个小部件。

$.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'); }
});

isCarisBike 基于用户输入。

if(isCar) {
   $( "div" ).car();
   $( "div" ).car('random');
} else if(isBike) {
   $( "div" ).bike();
   $( "div" ).bike('random');
}

如果我在某个地方调用random 方法,我将编写if 条件。 如果有任何可能的解决方案来避免if 条件或任何其他解决方案。

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

【问题讨论】:

  • 你想避免 if else 语句?

标签: javascript jquery jquery-widgets jquery-ui-widget-factory


【解决方案1】:

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

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

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

在这个例子中,我假设如果 isCarfalse isBiketrue 这与你的例子不完全一样。

【讨论】:

    【解决方案2】:

    您的帖子中缺少很多信息,但这里有一种方法可以避免“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>
    

    【讨论】:

    • 是的,我试图避免 if 条件。但是你提到了两个不同的元素。我有一个基于输入的元素,我切换了小部件。
    • 如何获取用户输入? @维吉
    猜你喜欢
    • 1970-01-01
    • 2021-06-20
    • 2012-07-19
    • 1970-01-01
    • 2014-06-25
    • 2014-08-17
    • 2010-11-04
    • 2020-07-14
    • 1970-01-01
    相关资源
    最近更新 更多