Может ли переменная быть передана в качестве идентификатора элемента в JavaScript - PullRequest
0 голосов
/ 29 августа 2011

Я пытаюсь запустить AJAX с Django, используя jQuery.Проблема в том, что идентификатор элемента, который я пытаюсь изменить, не установлен в камне, это переменная шаблона Django, поэтому он отличается для каждого элемента в таблице, но я хочу использовать AJAX для изменения этого элемента.Я передаю словарь из представления Django в JavaScript через simplejson, соответствующие объекты - это ID и модель (не настоящие имена переменных, я просто хотел, чтобы было очевидно, что я пытаюсь сделать).Некоторый псевдокод (третья строка, он написан как python, потому что я не знаю, как это сделать в JavaScript):

var quantity_update = function(msg, elem) {
    var response_obj = eval('(' + msg + ')');
    var newtotal = document.getElementById("%s, %s"); % (response_obj.id, response_obj.model)
    subtotal.innerHTML = "<td>"+response_obj.subtotal+"</td>"; 

Возможно ли что-то подобное, и если да, то как?

Ответы [ 3 ]

0 голосов
/ 29 августа 2011

Javascript не имеет необычного форматирования строки (% s), но вы можете использовать обычную конкатенацию строк, как в Python:генерируется динамически.В конце концов, это все еще строка, и getElementById принимает ее таким же образом.


Возможно, вам не следует выполнять eval () самостоятельно для анализа JSON.Я почти уверен, что вы можете сделать так, чтобы JQuery сделал это для вас, когда вы выполняете запрос AJAX.

0 голосов
/ 29 августа 2011

Вы можете полностью передать селекторы jquery css как переменные. Простой пример:

var elementId = $('td').eq(0).attr('id'),
    myElement = $('#'+elementId); 

В этом примере мы берем идентификатор первого TD в вашем документе, находим его идентификатор и используем его для получения «myElement»

Может оказаться полезным просмотреть раздел «селекторы» в документации jQuery (api.jquery.com), чтобы просмотреть все варианты поиска элемента. В моем примере я также использую метод jquery.eq (), который фильтрует список селекторов (в данном случае все TD) для определенного.

0 голосов
/ 29 августа 2011

Если ваш элемент ID не установлен в камне, вы можете определить элемент с помощью других средств. Многие JS-фреймворки, такие как jQuery, поддерживают идентификацию с помощью CSS Selector. Например, вы можете идентифицировать элемент, который хотите изменить, по комбинации его тега и класса.

Для получения документации по доступному селектору вы должны прочитать Документация по jQuery Selector

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