2014-09-12 25 views
1

我用這個jQuery代碼從文本進去DIV VAR值jQuery的獲取文本

$('div').each(function() { 
    var a = $(this).html(); 
    var b = a.split('/'); 
    $(this).html("<span>" + b[0] + "</span><span>" + b[1] + "</span><span>" + b[2] + "</span>"); 
    var c = $(this).text(); 
    var d = $(this).find("span").eq(0).text(); 
    var e = $(this).find("span").eq(1).text(); 
    var f = $(this).find("span").eq(2).text(); 
}); 

所以HTML將在這個形狀

<div>Text1/Text2/Text3</div> 

我想改變我的jQuery代碼獲取括號內的文本不是「/」

<div>[Text1][Text2][Text3]</div> 
+0

你嘗試過什麼嗎?如果你設法寫(甚至理解)你現在使用的代碼,我相當確定你可以根據你現在想要的做出什麼樣的改變。 – lascort 2014-09-12 15:48:20

+0

是的,我試圖通過刪除「[」和使'var b = a.split(']');'但這不工作好,因爲有']「留在」Text3「 – 2014-09-12 15:51:46

回答

1

最優雅的方法是使用正則表達式來解析出您的文本str英格斯,像這樣:

var text = a.match(/\[(.*)\]{1}\[(.*)\]{1}\[(.*)\]{1}/); 

然後無論你想要把它插入的每個文本字符串text[1]text[2]text[3]

所以在你的例子:

var b = a.match(/\[(.*)\]{1}\[(.*)\]{1}\[(.*)\]{1}/); 
$(this).html("<span>" + b[1] + "</span><span>" + b[2] + "</span><span>" + b[3] + "</span>"); 

注意:在正則表達式匹配的第一個元素是原始的字符串。

+0

有什麼問題這給我錯誤,我使用'a.match(/ [^ [\]] +(?=])/ g);'和工作正常,謝謝你的回答 – 2014-09-12 16:37:19