我有一个字符串为 - 0-100 这是我想分裂为0和100
我尝试过使用jquery
$("#costFilter li a").click(function () {
var temp = $(this).html().split("- ");
var temp1 = temp.split("-");
alert(temp1[0]);
alert(temp1[1]);
// $("#<%=initialCost.ClientID%>").val(temp1[0]);
// $("#<%=endCost.ClientID%>").val(temp1[1]);
// $("#<%=BtnCostFilter.ClientID %>").click();
});
哪个不起作用。 我的HTML为:
<ul style="list-style-type: none" id="costFilter">
<li><a href="#.">- 0-100</a> </li>
<li><a href="#.">- 100-200</a> </li>
<li><a href="#.">- 200 - 300</a> </li>
<li><a href="#.">- 400-500</a> </li>
<li><a href="#.">- 600-600</a> </li>
</ul>
没有警报正常。感谢您的帮助。
答案 0 :(得分:4)
首先,您应该使用text()
代替html()
来获取锚点的文本。
其次,只要您的字符串定期格式化,您就可以使用substring()
代替split()
来删除前导文本。这将解决您的代码的实际问题,即第一个split()
返回数组而不是单个字符串。
以下代码应该完全符合您的要求:
var temp = $(this).text().substring(2).split("-");
alert(temp[0]);
alert(temp[1]);
答案 1 :(得分:1)
您将html()
与' - '分开,因此您的真实价值在temp[1]
这个
$("#costFilter li a").click(function () {
var temp = $(this).html().split("- ");
var temp1 = temp[1].split("-"); //here
alert(temp1[0]);
alert(temp1[1]);
// $("#<%=initialCost.ClientID%>").val(temp1[0]);
// $("#<%=endCost.ClientID%>").val(temp1[1]);
// $("#<%=BtnCostFilter.ClientID %>").click();
});
答案 2 :(得分:1)
要澄清的几件事情:
您没有使用jQuery来拆分字符串。这只是很好的原生本机javascript。 jQuery是一个用于在与DOM交互时包含大量功能的库。
当您调用split()
时,这将返回由分隔符拆分的字符串数组。这意味着尝试以下行将导致解释器错误:var temp1 = temp.split("-");
因为temp
是一个字符串数组,而不是字符串本身。
那就是说,尝试更像以下内容:
$("#costFilter li a").click(function () {
var text = $(this).text();
var strings = text.split('-');
// jQuery utility function that takes an array and creates a new one based on items
// that are actually returned by the callback function (mine only keeps elements
// that aren't empty)
var filteredStrings = $.map(strings, function(str) {
if (str.length > 0)
return str;
});
//do what you need with your strings now
});
这是一个演示如何使用它的jsfiddle。 http://jsfiddle.net/AVeeN/