我有一个包含在名为“内容”的变量中的 HTML 字符串。HTML 字符串包含一个带 id 的 span,例如:
<span id="valuespan">This is the value of a text box</span>
我想使用跨度标记之间包含的任何内容作为复选框的值,但我不确定如何执行此操作。
谁能帮我吗?
谢谢!
由于您的字符串仍然是字符串,而不是页面上的元素,您可以将尖括号与正则表达式匹配,或者使用 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();
要获取字符串:
var contents = $('#valuespan').text();
要将其应用于复选框:
$('#checkbox').val(contents);
为了动态地创建复选框,答案是: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>');
});
这假设跨度字符串不在页面中。我将内容变量包装在一个额外的 div 中,它确保可以使用find
无论跨度处于什么级别的 html 层次结构
演示: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())
})