【问题标题】:JQuery: Selector that contains some text, but doesn't contain othersJQuery:包含一些文本但不包含其他文本的选择器
【发布时间】:2011-02-08 00:41:50
【问题描述】:

对不起,如果这个问题很容易回答,但我对 JQuery 有点陌生,而且我的截止日期很紧。

我正在寻找具有这种格式的文本框元素的选择器:

id = "FixedName_#"

“FixedName”将始终是“FixedName”,但我只想找到# 为正数的元素。所以我想查找“FixedName_1”和“FixedName_2”,但跳过“FixedName_-1”和“FixedName_-2”。

谢谢!

更新 结束了这样的事情(修改了我的实际代码以在此处显示,因此不确定这是否如图所示):

$("input[id*='FixedName_']").each(function() {
    if ($(this).attr("id").charAt(10) == "-") {
        //Do something.
    } else{
        //Do something else.
    }
});

【问题讨论】:

    标签: jquery jquery-selectors css-selectors


    【解决方案1】:

    我不确定你可以用一个选择器做到这一点。我要做的是选择 ID 以 FixedName_ 开头的所有元素,如下所示:

    $("[id|=FixedName_#]")
    

    然后您可以循环遍历结果并检查 # 之后的值。

    编辑:试试这个:

    $("[id^=FixedName_#]").each(function(){
    
    var controlNum = parseInt(this.id.replace('FixedName_#',''));
      if (controlNum >= 0){
        //......
      }
    });
    

    【讨论】:

    • 我最喜欢这个解决方案,因为我不必包含额外的正则表达式代码。你可以在选择器上使用选择器而不是循环遍历结果吗?例如,我将有一个收集所有“FixedName_”元素的变量,然后在该变量上运行一个选择器以仅选择带有“-”字符的那些?
    【解决方案2】:

    生成文本框的代码是否有可能根据 id 值设置类属性,例如 class="positive/negative"?为了能够选择 $('.positive')...

    【讨论】:

      【解决方案3】:

      这存储了id不包含-号的元素

      var elems = $('input:not([id*=-])');
      
      alert(elems.size());
      

      【讨论】:

        【解决方案4】:

        您可以尝试添加“FixedName”类,然后添加数字的 rel 以便您可以使用: if ( $('.FixedName').attr('rel') > 0 ) { ... }

        【讨论】:

          【解决方案5】:

          添加this attribute selector后,可以这样做:

          $("*:regex(id, ^FixedName_\\d+$)")
          

          也将匹配 FixedName_0。

          【讨论】:

            【解决方案6】:

            这可能会有所帮助

            Regex Selector for jQuery

            【讨论】:

              猜你喜欢
              • 2011-02-16
              • 1970-01-01
              • 2010-12-09
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-07-05
              • 1970-01-01
              • 2015-10-07
              相关资源
              最近更新 更多