【问题标题】:DRY principle: reference jQuery selector to avoid duplicatesDRY原则:参考jQuery选择器避免重复
【发布时间】:2018-05-22 21:47:04
【问题描述】:

假设我有一个函数,里面有一个对象

function MyFunction(){
    var options = {
        placeholder: $('#select option[value="-1"]'),
        first: $('#select option[value="-1"]').next()
    };
}

你看,jQuery 对象$('#select option[value="-1"]')placeholderfirst 项目中都有重复。这可行,但 PHPStorm 警告我有关重复的 jQuery 选择器

有没有办法可以引用first 项目中的placeholder 值?排序如下:

placeholder: $('#select option[value="-1"]'),
first: this.placeholder.next()

(当然提供的示例不起作用)

【问题讨论】:

    标签: jquery dry


    【解决方案1】:

    喜欢这样吗?

    function MyFunction(){
        var el = $('#select option[value="-1"]'),
            options = {
                placeholder: el,
                first: el.next()
            };
    }
    

    【讨论】:

      【解决方案2】:

      只需先将其创建为变量。

      function MyFunction(){
          var selected = $('#select option[value="-1"]');
          var options = {
              placeholder: selected,
              first: selected.next()
          };
      }
      

      【讨论】:

        【解决方案3】:

        不使用附加变量:

        function MyFunction(){
            var options = {};
            options.placeholder = $('#select option[value="-1"]');
            options.first = options.placeholder.next();
        }
        

        【讨论】:

        • 我想避免创建一个外部变量,这似乎是最符合我需求的答案。所以,我想我不能直接引用 inside var options = { ... },我必须先创建一个空对象,对吧?
        • 是的,必须预先创建对象并且必须定义使用的属性。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-22
        • 1970-01-01
        • 1970-01-01
        • 2013-06-26
        • 1970-01-01
        • 1970-01-01
        • 2018-12-27
        相关资源
        最近更新 更多