2013-08-07 72 views
0

這應該是很簡單 - 獲取從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

有人可以告訴我怎麼回事?

+1

你試圖在一個HTML字符串運行一個jQuery的方法,因爲'變種事件名稱= $( '#含量 - 面積H1')HTML();' –

回答

2

如果所需的輸出是Arrangementname那麼問題是第一行,應該是:

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

...因爲這使得eventname成爲jQuery對象,您可以在其中使用.find()來獲取跨度並將其與現有的第二行一起刪除。雖然實際上完全去除頁面跨度元素,所以你可能想這樣做:

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

...讓你有一個工作拷貝,不會影響什麼是顯示在頁面上。

接下來的問題是,您有一個變量eventnametrim,然後您在代碼的最後一行提到$eventnametrim。從後者中刪除$,以便名稱匹配。

如果你想獲得的CourseArrangementname的輸出,即忽略<span></span>標籤,但保留文本內容,你可以做這樣的:

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

謝謝 - 做到了。並感謝您的解釋。 – Crave

0

嘗試使用text()代替html()

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

Working Demo

0

嘗試:

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

HTML不是一個jQuery對象,我相信,這是怎麼回事。

1

就用:

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

使用.text() instad的.html()和事件名稱會包含不包含HTML文本;)

,因爲如果你刪除的跨度,那麼你要刪除的標籤和它的內容(你想要的文字)

+0

我要刪除。內容爲。但是,謝謝,我會記住。 – Crave

0

我得到了一個錯誤在控制檯。嘗試是這樣的: http://jsfiddle.net/GmzXG/

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

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