2011-09-12 52 views
2

有些話從搜索過,我想將它們包裝用div然後點擊一個環節,去掉外wrap,但我的代碼不工作了wrapunwrap。哪裏錯了?謝謝。jQuery的字經,並刪除包沒有奏效

<?php $_GET['search']='this is a text'; ?> 
<script type="text/javascript" src="../jquery.js" ></script> 
<script> 
$(document).ready(function() { 
    var words = '<?php echo $_GET['search']; ?>'; 
    $(words).wrap('<div id="words" />'); 
    $('body').append(words); 
    $('#click').click(function(){ 
     $(words).unwrap('<div id="words" />'); 
    }); 
}); 
</script> 
<body> 
<a id="click">remove me</a> 
</body> 

回答

2

字不能是字符串渦卷只能一個jquery對象,或DOM元件上。

嘗試這樣的事:

<script> 
$(document).ready(function() { 
    var words = 'this is your search string'; 
    words = '<div id="words">'+words+'</div>'; // wrap it, basically creating the string 
    $('body').append(words); 
    $('#click').click(function(){ 
     $('#words').replaceWith($('#words').get(0).childNodes); // get the words outsde of it again, unwrap only works on the inner element. 
    }); 
}); 
</script> 
<body> 
    <a id="click">remove me</a> 
</body> 
0

words必須是選擇器,而不是一個串

0

您將它們添加到文檔前包裹元素和文字必須是DOM元素。

您可以嘗試直接在<div id="words">your_php_result</div>上使用$('body').append()

0

這是您的選擇器不起作用。你最終做$('this is a text'),這將在這樣的結構用於text元件進行搜索:

<this> 
    <is> 
    <a> 
     <text></text> 
    </a> 
    </is> 
</this> 

當然沒有這樣的元素,所以該結果是一個空jQuery對象。

如果您想要在文本中包裝單詞,您必須遍歷頁面上的所有相關元素,使用.text().html()獲取其內容,在文本中查找單詞並將其替換爲包裝單詞,並將文本放回元素中。

一般來說,在服務器端代碼中這樣做更容易,更健壯。

2

點1 - 你可以用唯一的DOM元素,上述

第2點規定 - 你包之前,你必須將它添加到DOM,否則將沒有訪問 以添加「格」

第3點 - 如果你寫兩個$(單詞)和$(單詞),這些不是同一個對象!

你應該這樣做:

$(document).ready(function() { 
    var words = $('<span></span>').text('words words words'); 
    words.wrap('<div id="words"></div>'); 
    $('body').append(words); 
    $('#click').click(function(){ 
     words.unwrap('<div id="words" />'); 
    }); 
}); 

還要檢查this link to jsFiddle