0

我正在尝试使用一个名为“fancybox”的 Jquery 脚本

我需要它,因此标题将是指向所选页面的链接,该链接需要包含用户和图像名称。我可以通过 PHP $_GET 和一个 Javascript 函数来实现这些。

问题是如果您愿意,可以将它们作为一个字符串包含在一起。它不执行 javascript 来返回图像名称,而是只显示代码本身。

我的问题是如何在仍然使用 PHP 的同时执行 javascript 以包含在链接中?(在我包含 PHP 部分之前它工作)

这是我到目前为止得到的:

  jQuery(document).ready(function(){
        var imagename = function( item ) {
                        return item.href.replace('/images/<?php echo $_GET['user']; ?>/', '');
                    } 
    $(".fancybox")
        .attr('rel', 'gallery')
        .fancybox({

            margin      : 20,
            padding     : 10,
            openEffect  : 'none',
            closeEffect : 'none',
            nextEffect  : 'none',
            prevEffect  : 'none',
            margin      : [20, 60, 20, 60], // Increase left/right margin
            showCloseButton : true,
            showNavArrows   : true,
            title       : '<a href="delete.php?boat=<?php echo $_GET['user'].'&image='; ?>'+imagename+'">Delete this image?</a>'
        });
    })

这是它产生的链接:

http://xxx.xxx.xxx.xxx/delete.php?boat=BoatCV20&image=function%20(%20item%20)%20{%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20item.href.replace('/images/username1/',%20'');%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20}

谢谢。

4

5 回答 5

0

感谢您的所有帮助,最终使用以下代码到达那里:

jQuery(document).ready(function(){
$(".fancybox")
    .attr('rel', 'gallery')
    .fancybox({

        margin      : 20,
        padding     : 10,
        openEffect  : 'none',
        closeEffect : 'none',
        nextEffect  : 'none',
        prevEffect  : 'none',
        margin      : [20, 60, 20, 60], // Increase left/right margin
        showCloseButton : true,
        showNavArrows   : true,
        title       : function( item ) {
                    var imagename = item.href.replace('/images/<?php echo $_GET['user']; ?>/', '');
                    return '<a href="delete.php?boat=<?php echo $_GET['user'].'&image='; ?>'+imagename+'">Delete this image?</a>'
                }
    });
})
于 2013-06-21T13:25:13.000 回答
0

您应该调用imagename(item)不传递参考。

'...?boat=<?php echo $_GET['user']; ?>&image=' + imagename(item) + '">...'

但有一个问题。您希望每个图像的 item 参数都以某种方式存在。这种方式实际上是不可能的。您可以尝试更改每个图像的标题,然后通过将标题选项保留为默认选项来调用 fancybox:

$(".fancybox img").each(function() {
    $(this).attr('title', '...?boat=' + user + '&image=' + imagename(this) + '">...'
});

另外,我建议对您放入 uri 的图像路径进行 URLencode:

'...' + encodeURIComponent(imagename()) + '...'

并在一个地方使用 PHP 部分,如下所示:

var user = "<?php echo $_GET['user']; ?>";

然后user稍后使用 JavaScript 变量。它更具可读性。

于 2013-06-21T12:10:46.863 回答
0

我应该只用 javascript 来做,因为你没有做任何服务器端计算。您可以使用像这样的插件https://github.com/allmarkedup/purl从 url 获取您想要的参数,或者您可以在 stackoverflow 上搜索许多其他更轻的功能

于 2013-06-21T12:13:35.690 回答
0

imagename它是一个函数,所以你应该调用它imagename()

于 2013-06-21T12:10:29.753 回答
0

什么是物品?如果它是在 jQuery(document).ready 之前定义的全局变量,你可以这样做:

var imagename = item.href.replace('/images/<?php echo $_GET['user']; ?>/', '');
于 2013-06-21T12:31:23.487 回答