Вы можете генерировать Javascript через PHP (но это не очень хорошая идея)
Чтобы прямо ответить на ваш вопрос: вы можете «генерировать» Javascript динамически через код PHP. Например:
<!-- note that the source is .php so that the server processes it as such -->
<script type="text/javascript" src="dependency.php"></script
И dependency.php
будет выглядеть так:
<?php
// tell the browser how to interpret what we 'll be sending
header('Content-Type: text/javascript');
// get reference to any variables we need
$yadayada = /* ... */
?>
$(function() {
$('#se-kommentera<?=$yadayada['id']?>').click(function (e) {
$('#kommentera<?=$yadayada['id']?>').modal();
return false;
});
});
Все это действительно то же самое, что вы делаете при выводе HTML с PHP, только теперь вы выводите Javascript. Но проблема заключается в в том, что вы выполняете одну и ту же работу (что требуется для получения $yadayada
) два раза один раз для вашего HTML и один раз для вашего JS.
Так что же является хорошей идеей?
Просто измените разметку, чтобы не нужно было знать что-либо внутри $yadayada
, когда вы пишете свой JS; Таким образом, код может оставаться статичным. Например:
HTML:
<div class="se-kommentera testing">
<img src="..." height="15px" width="15px" alt="" title="Kommentera" />
<div class="settingsBox kommentera">
</div>
</div>
JS:
$(function() {
$('.se-kommentera').click(function (e) {
$(this).find(".kommentera").modal();
return false;
});
});
То, что я сделал здесь, - это предоставил способ найти соответствующий .kommentera
div не с абсолютным идентификатором (id
), а способом относительно к .se-kommentera
, по которому щелкнули.
Для удобства я решил поместить один div внутри другого и взять его с помощью .find
; но это не обязательно, и вы могли бы сделать десятки различных вариантов здесь. Например, вы можете дать обоим элементам div id
, как вы делали раньше, а затем сделать что-то вроде этого:
$(function() {
$('.se-kommentera').click(function (e) {
var id = this.id.replace("se-", "");
$("#" + id).modal();
return false;
});
});