获取id大于4的所有元素(ID由字符串和数字组合)

时间:2014-10-13 19:02:07

标签: javascript jquery

  <div id="table1"></div>
  <div id="table2"></div>
  <div id="table3"></div>
  <div id="table4"></div>
  <div id="table5"></div>
  ...

如何使用&#34; table&#34;选择所有元素和ID&gt; 4。

8 个答案:

答案 0 :(得分:3)

这样的事可能会对你有所帮助:

var test = /table(\d+)/;
$("[id^='table']").filter(function () {
  return parseInt(test.exec(this.id)[1], 10) > 4;
});

它将匹配以'table'开头的所有元素,然后过滤掉那些以小于或等于4的值结尾的元素。

答案 1 :(得分:1)

你可以用表[id ^ =&#39; table&#39;]查看id开头的每个元素,并检查其余的(数字)是否大于4

此处示例http://jsfiddle.net/fLg00oxq/2/

$("[id^='table']").each(function(){
    var id = $(this).attr('id').substr(5);   // remove table and leave just the number
    if(id > 4 ){
        // Your code here
    }
});

答案 2 :(得分:1)

修改,更新

尝试

v1(对于按数字排序的id,即,table1 - &gt; table2

$("[id=table4] ~ [id*=table]")

v2(无序id

$("[id*=table]").not(function() {
  // return elements that _don't_ match the selector ,
  // `id` cast as `Number` <= 4
  return this.id.match(/\d+/)[0] <= 4
})

Attribute Equals Selector [name="value"]

Next Siblings Selector (“prev ~ siblings”)

Attribute Contains Selector [name*="value"]

.not()

$("[id*=table]").not(function() {
  // return elements that _don't_ match the selector ,
  // `id` cast as `Number` <= 4
  return this.id.match(/\d+/)[0] <= 4
})
.each(function() {
  this.innerText = this.id
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
  <div id="table10"></div>
  <div id="table2"></div>
  <div id="table9"></div>
  <span></span>
  <div id="table6"></div>
  <div id="table5"></div>
  <div id="table1"></div>
  <div id="table7"></div>
  <div id="table8"></div>
  <div></div><br />
  <div id="table3"></div>
  <div id="table4"></div>

答案 3 :(得分:0)

这样做:

$("div[id^=table]").slice(4);

基本上它选择id为#34; table&#34;的所有div元素。之后,它删除了四个第一个匹配项并返回所有剩余的jQuery对象。

所以这假设有<div id="table1"> ... <div id="table2"> ... <div id="table[n+1]">

答案 4 :(得分:0)

如果您订购的div将在示例中:

修改HTML:

<div class="table"></div>
<div class="table"></div>
<div class="table"></div>
<div class="table"></div>
<div class="table"></div>

脚本

$(document).ready(function() {
 $('.table:gt(2)').each(function() {
    // Apply your functions for each div ....
 });
}

答案 5 :(得分:0)

<强> demo

var $tables = $('[id^=table]').filter(function(){
  return +this.id.replace(/\D+/,'') > 4;
});

$tables.hide(); // Use example

以上将从选择器ID中获取数字,并在大于4时进行比较。$tables现在将生成jQuery的filter()方法返回的元素集合。 / p>

.replace(/\D+/,'')将删除所有非数字(D+)字符;一元+会将String结果转换为Number,而> 4会将所需的结果转换为。


对于micro-Plugin扩展,您可以选择:

// Retrieve elements from mixed ID str+number
// Returns a collection of elements with ID number greather than the num argument
$.fn.idNumGreaterThan = function(num){
  return this.filter(function() {
     return +this.id.replace(/\D+/,'') > num;
  });
};

$('[id^=table]').idNumGreaterThan(4).hide();
// Also with class selectors (element must have a mixed alphaNumeric ID)
$('.element').idNumGreaterThan(4).hide();

答案 6 :(得分:-1)

您可以尝试使用此代码,但我认为有更好的方法可以执行此操作:

for (var i = 4; i <= 100; i++) {
    $('#table'+i)...
};

答案 7 :(得分:-1)

您可以尝试像$('div[id~=table]')

这样的包含选择器

参考http://api.jquery.com/attribute-contains-word-selector/