【问题标题】:Finding similarly named variables using jquery使用 jquery 查找名称相似的变量
【发布时间】:2014-04-08 04:16:49
【问题描述】:

我的代码在下面

<script>
ball1 = "this is ball1";
ball2 = "this is ball2";
ball3 = "this is ball3";
bat = "this is not a ball";

var arr = $("[name^='ball']");
alert(arr.length);
</script>

我想获取以字符串“ball”开头的所有变量。我该怎么做?上面的代码将 arr.length 设为 0。我的代码是否正确?

【问题讨论】:

  • 它们是 javascript 变量...不是带有以 ball 开头的 name 属性的 html 对象
  • 我能问一下你为什么这样做吗?
  • @Adween 我如何找到 javascript 变量?
  • @sam 试试拖延者的方法
  • 我读过your previous question,它让事情变得更加清晰。但是仍然存在两个问题:您想要访问哪些变量 - 全局或本地定义的变量 - 以及为什么?我相信为什么在这里知道如何正确回答很重要。

标签: javascript jquery wildcard


【解决方案1】:

jQuery 旨在查询 DOM 树。无论如何,试试这个:

var r = /^ball/,
    balls = [];
for (var k in window) {
    r.test(k) && balls.push(window[k]);
}

注意window(最上面的范围)是隐式填充的:

<script>
var ball1 = '1'; // global variable
window.ball1; // '1'
</script>

但是,如果您在函数内部工作,则情况并非如此:

function f() { 
    var ball1 = '1'; // local variable
    window.ball1; // undefined
}
f();
window.ball1; // undefined;

在这种情况下,无法从外部访问ball1

【讨论】:

  • 这在 IE8 中给了我一个空数组。有什么解决办法吗?
【解决方案2】:

这将给出 0 作为

$("[name^='ball']") 将搜索带有属性 'name' 而不是变量名的 DOM

【讨论】:

    【解决方案3】:

    作为拖延者优雅的 javascript 解决方案的替代方案。如果你想使用 jquery 和 dom 对象来做,你可以做类似的事情

    http://jsfiddle.net/kDy8Z/1/

    <span name="newsletter"></span>
    <span name="milkman"></span>
    <span name="newsboy"></span>
    
    <script>
    $(function(){
        var array = $("[name^='news']");
        alert(array.length);
    });
    </script>
    

    它们不必是跨度,而是任何具有以新闻开头的名称属性的东西。

    示例取自这里https://api.jquery.com/attribute-starts-with-selector/

    【讨论】:

      猜你喜欢
      • 2021-08-31
      • 2011-02-08
      • 2011-03-09
      • 2015-11-10
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-11
      相关资源
      最近更新 更多