Как вставить переменную $ в jQuery
Я работаю в Drupal с jQuery. Как вставить переменную php $ в тег.
$(document).ready(function(){
$("#comment-delete-<?php print $variable ?>").click(function(){
$("div.comment-<?php print $variable ?> span.body").replaceWith("new text");
});
})
или же
$(document).ready(function(){
$("#comment-delete-". $variable).click(function(){
$("div.comment-". $variable ." span.body").replaceWith("new text");
});
})
Несколько вещей, чтобы уточнить. Я работаю в Drupal, поэтому полный код выглядит так:
<?php
drupal_add_js (
'$(document).ready(function(){
$("#comment-delete-"' print $comment->cid; ').click(function(){
$("div.comment-"' print $comment->cid; '" span.body").replaceWith("<span style=\'color: grey;\'>Please wait...</span>");
});
})',
'inline');
?>
но это все еще не работает.
Обновление: я попробовал следующее, но это все еще не работает
<?php
$testing = "42";
drupal_add_js (
'$(document).ready(function(){
$("#comment-delete-"'. $testing .').click(function(){
$("div.comment-"'. $testing .'" span.body").replaceWith("<span style=\'color: grey;\'>Please wait...</span>");
});
})',
'inline');
?>
Если я использую число "42" вместо переменной, это работает, но не при использовании переменной... странно.
3 ответа
На основании вашего комментария:
<?php
drupal_add_js ('
$(document).ready (function() {
$("#comment-delete-' . $variable . '").click (function() {
$("div.comment-' . $variable . ' span.body").replaceWith ("new text");
});
})
','inline');
?>
Вы должны объединить $variable
, вместо print
это
$(document).ready(function(){
$("#comment-delete-<?php print $variable ?>").click(function(){
$("div.comment-<?php print $variable ?> span.body").replaceWith("new text");
});
})
Поскольку PHP выполняется ДО загрузки страницы, второй метод не будет работать. На самом деле, второй смешивает два разных языка, которые работают в разное время, что означает... он все равно не будет работать.
Это то, что происходит.
Страница запросов браузера
PHP создает страницу HTML
PHP ищет файл для <?php ?>
теги и запускает код внутри них:
$(document).ready(function(){
$("#comment-delete-<?php print $variable ?>").click(function(){
$("div.comment-<?php print $variable ?> span.body").replaceWith("new text");
});
})
Приведенный выше пример создаст это после анализа:
$(document).ready(function(){
$("#comment-delete-mytag").click(function(){
$("div.comment-mytag span.body").replaceWith("new text");
});
})
Сервер отправляет страницу в браузер
Браузер читает страницу
Javascript работает:
$(document).ready(function(){
$("#comment-delete-mytag").click(function(){
$("div.comment-mytag span.body").replaceWith("new text");
});
})
Если вы заметили, PHP просто создает веб-страницу для отправки в браузер. Поэтому все, что вам нужно сделать с помощью PHP - это создать код Javascript. При работе в PHP вы никогда не должны следовать никаким правилам синтаксиса Javascript. Вы должны просто сделать правильный синтаксис Javascript, когда он попадает в браузер. АКА Вы можете вставить все <?php ?>
Тэги, которые вы хотите, до тех пор, пока страница попадает в браузер, это действительный Javascript.
Если вы передаете код в функцию, как указано в вашем комментарии, вы создадите строку, которая заключена в кавычки, и в этом случае ваш второй пример будет правильным:
drupal_add_js (
'$(document).ready(function(){
$("#comment-delete-'. $variable . ').click(function(){
$("div.comment-'. $variable . ' span.body").replaceWith("<span style=\'color: grey;\'>Please wait...</span>");
});
})',
'inline');
[править] Упс, неважно, я просто понял, что точный ответ уже опубликован, я просто не был достаточно осторожен, чтобы следовать ему..