2014-10-28 51 views
-1

我試圖用.replace創造一些跨度,我以後可以點擊:jQuery的:通過更換(加入)的元素是不能點擊,即使有。對()

mytext.replace("someword","<span class='clickme'>someword</span>") 

它正確地做創建跨度,但我無法讓他們觸發jQ事件。我試過了:

$(document).on("click",".clickme",function(){ 
    alert("meow") 
}) 

但是這也行不通,感覺就像我失去了一些東西。謝謝!

+4

什麼是'mytext'? - 你有沒有重新追加到DOM?你有沒有檢查過,以確認這些跨度是否在那裏? – tymeJV 2014-10-28 21:13:34

+0

您可以使用jsFiddle.net示例或堆棧片段重新創建問題嗎? – j08691 2014-10-28 21:14:27

+0

在使用'replace()'之後你是否實際插入了html?顯示更多代碼 – charlietfl 2014-10-28 21:15:50

回答

0

,如果你重新從 http://jsbin.com/hejefayebi/1/edit?html,js,output

那麼是發生什麼事,你必須採樣的文本:)

var mytext = $('p').text(), 
 
    changes = mytext.replace("someword","<span class='clickme'>someword</span>"); 
 

 
$('p').html(changes); 
 

 
$(document).on("click",".clickme",function(){ 
 
    alert("meow"); 
 
})
.clickme{ 
 
    background: #f00; 
 
    color: #fff; 
 
    cursor: pointer; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 

 

 
<p>Lorem ipsum dolor someword sit amet</p>

1

JSBIN替換文本的元素,它應該工作您不會將替換的文本添加爲​​頁面的html。

看到,當你使用字符串對象的「替換」功能時,你正在操作文本,就是這樣,文本,replace function返回一個帶有操縱文本的新字符串,你需要將該文本插入到html中不知何故。

即如果更換在下面的文本富:

var justText = "Hi I'm foo"; // Just some text 
// First the replace function returns a new string, it does not modify the original string, so you have to reassign the value 
justText = justText.replace("foo", "<span>foo</span>"); // replace will return "Hi I'm <span>foo</span>", but you need to assign it. 
// Assign the text to a paragraph 
var p = document.getElementById("paragraph"); 
// Then because you want to insert new HTML DOM elements into an existing element 
// you have to use either the "innerHTML" property of HTML elements, or the "html" jQuery function (which use innerHTML internaly); 
p.innerHTML = justText; // Once you have inserted the DOM elements, the click bindings will be attached. 
相關問題