JQuery:在复选框值</span>中使用<span> from string

时间:2012-06-19 04:28:07

标签: jquery string input checkbox

我在var中包含一个名为“content”的HTML字符串。 HTML字符串包含带有id的span,例如:

<span id="valuespan">This is the value of a text box</span>

我想使用span标记之间包含的任何内容作为复选框的值,但我不确定如何执行此操作。

任何人都可以帮助我吗?

谢谢!

4 个答案:

答案 0 :(得分:1)

由于您的字符串仍然是字符串,而不是页面上的元素,您可以将尖括号与正则表达式匹配,或使用jQuery创建元素并提取源

<强>正则表达式

var content = '<span id="valuespan">This is the value of a text box</span>';
var text = content.match(/>(.*)<\/span>/)[1];
$(target-checkbox).val(text);

<强>的jQuery

var content = '<span id="valuespan">This is the value of a text box</span>';
var text = $(content).text();
$(target-checkbox).val(text);

正则表达式很糟糕,如果可能的话应该避免,但这也是jQuery的可怕使用。如果可能的话,你应该在信息链中看得更远,并以另一种方式处理文本。

编辑评论:对于具有唯一ID的多个范围

var content = '<span id="valuespan1">This is the value of a text box</span><span id="valuespan2">This is the value of a text box</span>';
var fragment = $('<div />').html(content);
var text1 = fragment.find('#valuespan1').text();
var text2 = fragment.find('#valuespan2').text();

答案 1 :(得分:0)

获取字符串:

var contents = $('#valuespan').text();

将其应用于复选框:

$('#checkbox').val(contents);

答案 2 :(得分:0)

这假设span字符串不在页面中。我将内容变量包装在一个额外的div中,以确保可以使用find,无论跨度是什么级别的html hirarchy

DEMO:http://jsfiddle.net/8WZJT/

var content='<span id="valuespan">This is the value of a text box</span>';

$('#test').val($('<div>').append(content).find('#valuespan').text()).click(function(){
    alert($(this).val())
})

答案 3 :(得分:0)

为了动态创建复选框,答案是:http://jsfiddle.net/martinschaer/zQAHj/

var span = '<span id="valuespan">This is the value of a text box</span>';
var value = $(span).text();
var id = $(span).attr('id');
var field = '<input type="checkbox" name="' + id + '" id="' + id + '" value="' + value + '" />';
field += '<label for="' + id + '">' + value + '</label>';
$('#theform ul').append('<li>' + field + '</li>');

对于变量中的多个范围: http://jsfiddle.net/martinschaer/2b5Lj/

var span = '<span id="valuespan">This is the value of a text box</span><span id="valuespan2">This another text box value</span>';

$('span', $('<div>' + span + '</div>')).each(function(){
    var value = $(this).text();
    var id = $(this).attr('id');
    var field = '<input type="checkbox" name="' + id + '" id="' + id + '" value="' + value + '" />';
    field += '<label for="' + id + '">' + value + '</label>';
    $('#theform ul').append('<li>' + field + '</li>');
});