我正在使用smartAdmin模板开发Web应用程序,该模板是完全基于ajax的模板,您可以检查演示here。我在此模板中面临一些困难。当我在某些页面上编写一个javascript函数时,它可以在所有页面上使用。
例如
$(document).on('click', '#elementA', function(){
alert('Hello World');
});
在其他页面上也具有相同ID的元素上工作,很难为所有元素赋予不同的ID,因为这是一个非常大的项目,而且我已经有6个月的时间了,所以我思考了一下,找出解决方案为每个页面提供唯一的ID,并编写这样的脚本。
$(document).on('click', '#pageA #elementA', function(){
alert('Hello World');
});
我以为我解决了这个问题,但是功能并未停止在其他页面的元素上工作。但是当我第二次访问#PageA时,该函数运行两次。实际上,模板将所有用户定义的函数存储在本地内存存储中(我想我对此不太确定)并一直存储,直到我们不刷新整个模板为止。
答案 0 :(得分: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);
}