Строковая интерполяция в JavaScript - PullRequest
12 голосов
/ 10 мая 2009

В Ruby вы можете использовать интерполяцию строк следующим образом:

text = "This is visit number #{numVisits} to this website"

Это позволяет обойтись без явной конкатенации.

Я работаю с jQuery и немного похож на это:

$(document).ready(function(){
    $("a.ajax").click(function(event){
        $("#content").load("data.html this.getClass");
    });
});

Мне нужно «щелкнуть по <a class="ajax" id="schedule"></a>, и content div на текущей странице будет заменено на schedule div с data.html. Если я пишу вручную в

load("data.html #test"); 

это работает, но я хочу, чтобы скрипт загружал DIV, щелкнув значение идентификатора привязки. Любая помощь будет отличной!

Пример страницы: http://www.mariahandalex.info/stack/

Ответы [ 5 ]

16 голосов
/ 05 февраля 2015

Это изменилось.

По состоянию на 2015 год теперь есть лучший способ: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/template_strings

Доведение до JS того, что уже нравится многим языкам, таким как Ruby и PHP.

Например, на моей странице, управляемой jQuery, я использую:

   $('#myModalLabel').html(`Show GRAPH of : ${fundCode}-${funcCode}`); 

Что безопасно отображается в моих обновленных Firefox и Chrome как:

Показать графическое изображение: AIP001-_sma

Обратите внимание на использование обратных галочек, окружающих строковый параметр, в .html ( .... )

6 голосов
/ 10 мая 2009

Вы не можете вставлять код javascript в строку, но вы можете объединить строку с объектом, используя '+', как, например,

$('#content').load('data.html #' + $(this).getClass());

О внедрении кода в строку, я не думаю, что у него есть имя. Groovy называет эти строки " Gstring ", а ruby ​​вызывает эти " Подстановка выражений в строках ". Я не уверен, что у него стандартное имя.

5 голосов
/ 10 мая 2009

Javascript не анализирует строковые литералы в поисках маркеров замены, как в Ruby или PHP. Вам придется использовать конкатенацию.

2 голосов
/ 10 мая 2009

Попробуйте это:

$(document).ready(function(){
    $("a.ajax").each(function(){
        var obj = $(this);
        obj.click(function(event){
           alert(obj.attr('id'));
        });
    });
});
1 голос
/ 26 января 2016

в es6 это возможно

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/template_strings

`string text ${expression} string text`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...