2012-01-23 294 views
1

我有這樣的代碼,我需要設置一個唯一的title如何將變量插入到變量字符串中?

var tmpImg = '<img src="/admin/icons/cross.png" title="' + title + '" />'; 

$(this).find("tr td input").each(function(){ 
    title = $(this).attr("value"); 
    $(this).hide().before(tmpImg); 
}); 

我希望發生的,就是每一次迭代each<input>,它將更新tmpImg字符串title值。我知道我可以像下面那樣分開img HTML,但我認爲當我需要在後面的腳本中重新使用圖像時,這會變得混亂。

var tmpImg = '<img src="/admin/icons/cross.png" title="'; 

$(this).find("tr td input").each(function(){ 
    title = $(this).attr("value"); 
    $(this).hide().before(tmpImg + title + '" />'); 
}); 
+1

我覺得輕度有趣,你拼寫單詞「變量」兩種不同的方式 - 無論是不正確 - [在問題標題](http://stackoverflow.com/posts/8969771/revisions#revbac494ba-2a4a-4d42-987e-d10db9de3e62):-) –

回答

3

這些字符串替換解決方案是堅果。只需製作元素的副本並直接在其上設置屬性即可。

var tmpImg = $('<img src="/admin/icons/cross.png" />'); 

$(this).find("tr td input").each(function() { 
    $(this).hide().before(tmpImg.clone().attr('title', this.value)); 
}); 
+0

這看起來像我會作爲答案。 –

2

改變變量排序模板:

$(this).hide().before($(tmpImg.replace("$title", this.value))); 

以上具有最小改動原來的代碼,更好的jQuery的方法:

var tmpImg = '<img src="/admin/icons/cross.png" title="$title" />'; 

然後利用輸入值替換雖然是這樣的:

$(this).hide().before($("<img />").attr("src", "/admin/icons/cross.png").attr("title", this.value)); 
0

你可以把某種佔位符號的字符串,然後使用replace

var TITLE_TOKEN = '%%TITLE%%'; 
var tmpImg = '<img src="/admin/icons/cross.png" title="' + TITLE_TOKEN + '" />'; 

$(this).find("tr td input").each(function(){ 
    $(this).hide().before(tmpImg.replace(TITLE_TOKEN, $(this).attr("value"))); 
}); 

旁註:$(this).attr('value')通常是更好的書面this.value$(this).val()

1

這是我怎麼會做它,因爲它的價值:

$(this).find("tr td input").each(function(){ 
    $('<img/>', { 
     src: "/admin/icons/cross.png", 
     title: this.value 
    }).insertBefore(this).next().hide(); 
}); 
相關問題