我正在使用jQuery在Drupal中工作。如何将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”而不是变量,它可以工作,但不是在使用变量时......很奇怪。
答案 0 :(得分: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代码。在PHP中工作时,您实际上不必遵循任何Javascript语法规则。您必须在访问浏览器时简单地使Javascript语法正确。 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');
答案 1 :(得分:3)
根据您的评论:
<?php
drupal_add_js ('
$(document).ready (function() {
$("#comment-delete-' . $variable . '").click (function() {
$("div.comment-' . $variable . ' span.body").replaceWith ("new text");
});
})
','inline');
?>
您应该连接$variable
,而不是print
- 连接它
答案 2 :(得分:0)
[编辑]哎呀,没关系,我刚刚意识到确切的答案已经发布了,我只是不够小心地跟着它。