split不使用jquery对字符串起作用

时间:2013-01-25 05:48:05

标签: jquery jquery-ui

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

没有警报正常。感谢您的帮助。

3 个答案:

答案 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();
        });

fiddle here

答案 2 :(得分:1)

要澄清的几件事情:

  1. 您没有使用jQuery来拆分字符串。这只是很好的原生本机javascript。 jQuery是一个用于在与DOM交互时包含大量功能的库。

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

  3. $.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/