剥离跨度并投入输入

时间:2013-08-07 14:38:04

标签: jquery

这应该非常简单 - 从h1代码获取内容,删除span代码并将剩余代码放入input代码

我有这个HTML:

<div id="contentArea">
    <h1><span>Course</span>Arrangementname<h1>
    <input type="hidden" id="arr1Form_Arrangement" name="arr1Form_Arrangement">
</div>

的jQuery

var eventname = $('#contentArea h1').html();
eventname.find("span").remove();
var eventnametrim = eventname.html();
//alert(eventnametrim);
$( "input[name*='Form_Arrangement']" ).val( eventnametrim );

但没有任何反应 - 警报也是空的。我的萤火虫告诉我 "eventname.find is not a function"它是jQuery 1.9.0

有人可以告诉我发生什么事吗?

5 个答案:

答案 0 :(得分:2)

如果所需的输出是Arrangementname,则问题是第一行,应该是:

var eventname = $('#contentArea h1');

...因为这会使eventname成为一个jQuery对象,您可以使用.find()获取范围并使用现有的第二行删除它。虽然这实际上完全从页面中删除了span元素,但您可能希望这样做:

var eventname = $('#contentArea h1').clone();

...以便您拥有一份不会影响页面上显示内容的工作副本。

下一个问题是你有一个名为eventnametrim的变量,然后你可以在代码的最后一行引用$eventnametrim。从后者中删除$,以便名称匹配。

如果您尝试获得CourseArrangementname的输出,即忽略<span></span>标记但保留文本内容,则可以这样做:< / p>

var eventname = $('#contentArea h1').text();
$( "input[name*='Form_Arrangement']" ).val( eventname );

答案 1 :(得分:1)

然后使用:

var eventname = $('#contentArea h1').text();
$( "input[name*='Form_Arrangement']" ).val( eventname );

使用.text().html() instad和eventname将包含不带html的文本;)

因为如果您删除了跨度,那么您将删除标记及其内容(您想要的文本)

答案 2 :(得分:0)

尝试使用text()代替html()

var eventname = $('#contentArea h1').text();
$( "input[name*='Form_Arrangement']" ).val( $.trim(eventname ));

<强> Working Demo

答案 3 :(得分:0)

尝试:

var eventname = $('#contentArea h1');

html不是jQuery对象,我相信,它正在发生的事情。

答案 4 :(得分:0)

我在控制台中收到错误。尝试这样的事情: http://jsfiddle.net/GmzXG/

$('#contentArea h1').find("span").remove();
var eventname = $('#contentArea h1').html();

//alert(eventnametrim);
$( "input[name*='Form_Arrangement']" ).val( eventname );