0

在 jquery 函数中使用诸如“if”之类的 php 语句是一种不好的做法吗?

我真的应该只编写加载更多函数而不是使用 php 限制一些函数吗?它似乎工作正常,但想知道这是否是一个主要的假人?

例子:

这是一个代码片段,基本上如果 php 变量 $url 等于 'projects' 那么代码将返回额外的行,否则这些将对其他页面隐藏。这有意义吗?

timer = setTimeout(function() {
                $('li#contact').removeClass('cur');
                $('li#$url').addClass('cur');
                "; if($url=='projects') { echo"
                $('ul.projects').fadeIn('slow');
                $('ul.image_display').css('display', 'block');"; }
                echo"
                    }, 8625);
4

6 回答 6

3

在我看来,就代码的可读性和可维护性而言,这是一种不好的做法。如果只是因为它是相互嵌入的两种语言,这意味着如果不解析两种语言就无法理解它,并且对于许多人来说,当他们在解析 JS 和解析 PHP 之间进行上下文切换时会导致心理“页面错误”。

根据存在的页面元素来创建 javascript 分支很容易,我认为这是一个首选的解决方案。它比有条件地提供某些 javascript 更好(尽管我认为当你有大量的 js 时提供不同的 javascript 可能开始有意义),它也比基于 URL 的分支更好......当你去重构它时会发生什么?

如果您真的必须根据 PHP 对您提供的 JS 进行分支,我希望至少在单独的行上看到它们......比如:

<?php if($stmt): ?>
$(javascript).code.goes.here
<?php else: ?>
$(alernative.javascript).code.goes.here
<?php endif; ?>

因为这比必须在一行/语句中阅读和理解两种语言更好。

于 2009-06-04T14:59:39.550 回答
1

这取决于。如果您只是写出一些供 javascript 使用的用户数据(例如用户 id 或名称),那么没有。但是,如果您经常将 PHP 用于控制结构,那么可能有更好的方法来做到这一点。

您的方法的一大缺点(除了代码有点难看)将阻止 js 被很好地缓存。通过动态创建 js 而不是在单独的压缩 js 文件中,您失去了缓存它的能力并损害了您的带宽。

于 2009-06-04T14:30:15.147 回答
1

你不应该把你的php代码放在php标签之间吗?否则,它只会显示在源代码中,而不是在服务器上进行处理。

timer = setTimeout(function() {
                    $('li#contact').removeClass('cur');
                    $('li#$url').addClass('cur');
                    "; <?php if($url=='projects') { echo"
                    $('ul.projects').fadeIn('slow');
                    $('ul.image_display').css('display', 'block');"; }
                    echo"
                            } ?>, 8625);

题外话:一些更好的格式也会很好:)

于 2009-06-04T14:32:05.017 回答
1

不错的做法,因为有时 PHP 变量的值会改变您希望代码执行的操作。

但是,您将不得不使用来打开和关闭您的 PHP 代码。

于 2009-06-04T14:34:50.223 回答
1

我尽量将所有代码分开(HTML/CSS/PHP/JS),因为我不喜欢我的 HTML 或 PHP 中的大块 JS 代码。我通常对变量所做的只是将它们放在 HTML 中的某个位置,例如<div id="url">value</div>,然后使用 jQuery 检索它。根据没有变量,我有时会在页面上使用display:none.

这样我仍然可以为多个应用程序使用相同的 JS 代码,具体取决于检索到的值。我必须说,我不知道这是否被认为是好的,或者这个设置/方法(也)没有完成。

于 2009-06-04T15:47:48.620 回答
0

我不认为这是不好的做法。我使用 ASP.NET 文字根据从数据库返回的数据写出动态 jQuery。我不经常这样做,但有时需要它。

于 2009-06-04T14:25:00.990 回答