1

我正在 smartAdmin 模板中开发 Web 应用程序,这是完全基于 ajax 的模板,您可以在此处查看演示。我在这个模板中遇到了一些困难。当我在某个页面上编写一个 javascript 函数时,它适用于所有页面。

例如

$(document).on('click', '#elementA', function(){
 alert('Hello World');
});

适用于也具有相同 id 的其他页面元素,很难为所有元素提供不同的 id,因为它是一个非常大的项目,我从 6 个月以来一直在研究它,所以我考虑了它并找到了提供唯一 id 的解决方案到每个页面并像这样编写脚本。

$(document).on('click', '#pageA #elementA', function(){
   alert('Hello World');
});

我以为我解决了这个问题,但功能不是停止在其他页面的元素上工作。但是当我第二次访问#PageA 时,该函数会运行两次。实际上模板将所有用户定义的函数存储在本地内存存储中(我想,我不确定)并继续存储,直到我们不刷新整个模板。

4

1 回答 1

1

好的,经过长时间的研发,我自己解决了这个问题。我使用 loadscript() 函数来防止不必要地加载脚本两次。

我将所有脚本写入一个文件(现在我将有一页有两个视图页面。)

早些时候它就像.. A.php -> JScript + PHP & HTML 现在它就像 A.php -> PHP & HTML, script/A.php -> OnlyJS

由于我正在使用 codeginiter 框架,并且不希望其他人通过 url 访问它来查看 js,所以我使用了这个过程。

我的视图文件上的代码

loadScript("<?php echo site_url('processor/load_script/path_to_folder/script/add'); ?>");

处理器控制器上的功能

public function load_script($path)
{
    $last_segment = count($this->uri->segment_array());
    $path = '';
    for($i=3;$i<=$last_segment;$i++)
    {
        $path .= '/'.$this->uri->segment($i);
    }
    $this->load->view('core/ajax'.$path);
}
于 2018-06-29T11:16:50.423 回答