jQuery加入多个标签

时间:2011-04-11 12:39:53

标签: jquery join

您好 我有一个div元素,其中包含一个像这样的复选框列表

 <ul>
 <li><input type="checkbox" ID="check1" /><label for="check1">Monday</label></li>
 <li><input type="checkbox" ID="check2" checked="checked"/><label for="check2">Tuesday</label></li>
 <li><input type="checkbox" ID="check3" /><label for="check3">Wednesday</label></li>
 <li><input type="checkbox" ID="check4" checked="checked"/><label for="check4">Thursday</label></li>
</ul>

我希望在“星期二 - 星期四”之类的字符串中检查值。所以我写了这个非常简洁的jQuery指令

$('input:checked', 'ul').next().text() 

这给我'星期二星期四'。 我找不到传递分隔符的方法并且有'星期二 - 星期四'

6 个答案:

答案 0 :(得分:5)

尝试类似

的内容
$('input:checked', 'ul').map(function(){
    return $(this).next().text();
}).get().join('-');

答案 1 :(得分:3)

您需要使用each功能

var input = '';
$('input:checked', 'ul').each(function{
    input += $(this).next().text() + "separator";
});

答案 2 :(得分:1)

使用aregex?

var str =$('input:checked', 'ul').next().text().replace( /([a-z])([A-Z])/g, "$1-$2");
alert(str);

修改过的小提琴也只是忘了让它处理超过2个

<强>释

请不要注意一个正则表达式专家,所以我的解释可能不是100%准确

.replace()是一个javascript函数,可以替换文本字符串。它可能需要Regular expression

在示例中我给正则表达式介于/ /反斜杠第一部分

之间
[a-z]

说找小写字母

在正则表达式的第二部分

[A-Z]

说找大写字母

将它们放在括号中表示我们需要小写后跟大写

然后“g”表示要进行全局替换,即在找到第一组之后再次执行,直到找不到更多

然后在正则表达式之后我们需要告诉它我们想要用它来替换它

$1

$2

是来自正则表达式的变量赋值,我们在它们之间加上连字符以给出我们想要的结果

DEMO

答案 3 :(得分:0)

试试这个:

function getDaysString(){
    var returnValue = "";
    $("input:checked+label", "ul").each(function(){
        returnValue += $(this).text() + "-";
    });
    return returnValue.replace(/-$/, "");
}

答案 4 :(得分:0)

checkedBoxes = new Array();
$('input').each(function(){ checkedBoxes.push($(this).next().text()+'-') });
checkedBoxes.join('-');

答案 5 :(得分:0)

$(document).ready(function() {
    var days = $.map($("input:checked"), function(element, index) {
        return $(element).next().text();
    }).join("-");
    alert(days);
});

工作示例:http://jsfiddle.net/peeter/t4X3S/