使用jquery拆分字符串不起作用

使用jquery拆分字符串不起作用,jquery,jquery-ui,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

我有一个字符串-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();
            });
$(“#costFilter li a”)。单击(函数(){
var temp=$(this.html().split(“-”);
var temp1=温度拆分(“-”);
警报(temp1[0]);
警报(temp1[1]);
//$(“#”)val(temp1[0]);
//$(“#”)val(temp1[1]);
//$(“#”)点击();
});
这不管用。 我的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>
没有警报在工作。谢谢您的帮助。

您将
html()
拆分为“-”,因此您的实际价值在
temp[1]
提尔,这个

$(“#costFilter li a”)。单击(函数(){
var temp=$(this.html().split(“-”);
var temp1=temp[1]。拆分(“-”;//此处
警报(temp1[0]);
警报(temp1[1]);
//$(“#”)val(temp1[0]);
//$(“#”)val(temp1[1]);
//$(“#”)点击();
});

您将
html()
与“-”分开,因此您的实际值在
temp[1]
提尔,这个

$(“#costFilter li a”)。单击(函数(){
var temp=$(this.html().split(“-”);
var temp1=temp[1]。拆分(“-”;//此处
警报(temp1[0]);
警报(temp1[1]);
//$(“#”)val(temp1[0]);
//$(“#”)val(temp1[1]);
//$(“#”)点击();
});

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

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

以下代码应该完全满足您的要求:

var temp = $(this).text().substring(2).split("-");
alert(temp[0]);
alert(temp[1]);

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

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

以下代码应该完全满足您的要求:

var temp = $(this).text().substring(2).split("-");
alert(temp[0]);
alert(temp[1]);

有几件事需要澄清:

  • 您没有使用jQuery拆分字符串。这只是一个很好的老式本地javascript。jQuery是一个库,用于在与的交互中封装大量功能

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

  • 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
    });
    

    下面是一个JSFIDLE,演示如何使用它

    有几件事需要澄清:

  • 您没有使用jQuery拆分字符串。这只是一个很好的老式本地javascript。jQuery是一个库,用于在与的交互中封装大量功能

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

  • 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
    });
    

    下面是一个JSFIDLE,演示如何使用它

    再次缺少文档准备处理程序?再次缺少文档准备处理程序?