Я работаю в 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» вместо переменной, оно работает, но не при использовании переменной … странно.
Основываясь на вашем комментарии:
<?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 Code. При работе на PHP вы никогда не должны следовать правилам синтаксиса Javascript. Вы должны просто правильно настроить Javascript Syntax, когда он попадает в браузер. AKA Вы можете вставить все теги <?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');
[править] Ooops, неважно, я просто понял, что точный ответ уже отправлен, я просто не был достаточно осторожен, чтобы следить за ним.