2012-06-25 21 views
1

我有以下HTML可能出现,但只有一次一个:与jQuery一起使用子字符串函数?

<a id="menuRange" class="button" href="#">1 - 100</a> 
<a id="menuRange" class="button" href="#">101 - 200</a> 
<a id="menuRange" class="button" href="#">201 - 300</a> 

,我用这个代码来获取范围:

var $field = $('#menuRange'); 
var nums = $field.text().split('-').map(function (a) { 
    return parseInt(a, 10) + d * 100 
}); 

现在我想改变HTML到:

<a id="menuRange" class="button" href="#">Lines 1 - 100</a> 
<a id="menuRange" class="button" href="#">Lines 101 - 200</a> 
<a id="menuRange" class="button" href="#">Lines 201 - 300</a> 

我该如何做到这一点,所以我仍然像以前一样获得nums数据。换句话说,我可以如何让它忽略“Lines”这个词,好像它不在那里一样?

+1

您应该考虑对不同元素使用“唯一ID”。 –

+0

只有一行会出现在一页中。谢谢 – Alan2

+1

@Joy有一个隐藏的陷阱,显然只有其中一个元素是在页面上一次 – Esailija

回答

2

如果你想在你放什么锚的内容移动使用你的代码进行计算为属性值完全的自由。然后你就可以改变你的主意,用户看到的内容,而无需改变你的JS代码:

<a id="menuRange" class="button" href="#" data-lines="1-100">Lines 1 - 100</a> 
<a id="menuRange" class="button" href="#" data-lines="101-200">Anything here</a> 
<a id="menuRange" class="button" href="#" data-lines="201-300">still works</a> 

var $field = $('#menuRange'); 
var nums = $field.attr("data-lines").split('-').map(function (a) { 
    return parseInt(a, 10) + d * 100 
}); 

你可以选择的最小独立属性和max:

<a id="menuRange" class="button" href="#" data-min="1" data-max="100">Lines 1 - 100</a> 

然后您可以单独检索它们,而不是从单个字符串中分离出来:

var min = $field.attr("data-min"), // to get it as a string 
    max = $field.attr("data-max"); // use .attr() 
// OR 
var min = $field.data("min"),  // to have jQuery automatically convert 
    max = $field.data("max");  // it to a number use .data() 
5

只要把.substring().text()

var nums = $field.text().substring(6).split('-')... 

即刚切出返回文本的第6个字符。

或者,如果前缀并不总是存在:

var nums = $field.text().replace(/^Lines /, '').split('-') 
相关问题