2012-01-23 2 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>, он обновляет значение title в tmpImg строке. Я знаю, что могу отделить 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

Я нахожу это слегка забавно, что вы написали слово «переменная» 2 разные способы - как неправильно - [в Заголовок вопроса] (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

Изменить переменную для сортировки шаблона:

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

Затем замените его со значением входного:

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

выше имеет минимальные изменения в исходном коде, тем лучше JQuery путь хотя это:

$(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"))); 
}); 

Side Примечание: $(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(); 
}); 
Смежные вопросы