2009-12-29 6 views
0

Я работаю в 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"); 
    }); 
}) 

Несколько вещей clearify. Я бегу в 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» вместо переменной, она работает, но не при использовании переменной ... странно.

+0

Вы даже попробовали? Первый метод должен работать для вас –

+0

Я нахожусь в Drupal, я использую Print $ variable < («новый текст»); }) }) (0) (0) (0) ','в очереди'); ?> но это не работает – Tim

+0

неважно ... это не сработает ... Но, как вы можете видеть, я уже в php Tim

ответ

3

Основываясь на ваш комментарий:

<?php 
    drupal_add_js (' 
     $(document).ready (function() { 
      $("#comment-delete-' . $variable . '").click (function() { 
       $("div.comment-' . $variable . ' span.body").replaceWith ("new text"); 
      }); 
     }) 
    ','inline'); 
?> 

Вы должны сцепить $variable, вместо print -ную это

+0

Это сделало трюк – Tim

6
$(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'); 
0

[править] Ooops, неважно, я только понял, что точный ответ уже отправлен, я просто не был достаточно осторожен, чтобы следить за ним.

+0

Установите флажок рядом с одним из наших ответов, чтобы отметить его. Thnx! Рад, что ваша проблема решена. –

Смежные вопросы