0

我有一个字符串为 - 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>

没有警报在起作用。感谢您的任何帮助。

4

3 回答 3

4

首先,您应该使用text()而不是html()仅获取锚点的文本。

其次,只要你的字符串有规律地格式化,你就可以使用substring()而不是split()去掉前导文本。这将解决您的代码的实际问题,即第一个split()返回数组而不是单个字符串的事实。

以下代码应该完全符合您的要求:

var temp = $(this).text().substring(2).split("-");
alert(temp[0]);
alert(temp[1]);
于 2013-01-25T05:51:34.400 回答
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();
        });

在这里摆弄

于 2013-01-25T05:50:25.200 回答
1

有几点需要澄清:

  1. 您没有使用 jQuery 来拆分字符串。那只是很好的旧本机javascript。jQuery 是一个库,用于包装大量与DOM交互的功能。

  2. 当您调用split()它时,将返回一个由分隔符分隔的字符串数组。这意味着尝试以下行将导致解释器错误:var temp1 = temp.split("-");因为temp是字符串数组,而不是字符串本身。

$.map的 api 文档

也就是说,尝试类似以下的方法:

$("#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/

于 2013-01-25T06:03:23.650 回答