欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

smarty与js的交互问题

shiping1 的头像
我使用SMARTY传值给了JS。。JS也收到了内容。。var abc = <{$row_array}>;alert(abc[0]['id']);这样书写的话是可以在PHP页面正常输出值的。。这是写在HTML页面的。。我如果写在外部的JS的文件中。。将JS文件调用在HTML中。。这程序就一点反应都没有了。。是为什么呢??<script type="text/javascript" language="javascript" src="test.js"></script>js里的内容和上面的一摸一样。。路劲什么的都正确啊。。就是没反应是为什么呢??
2011-12-23 08:22

 
 
正确答案 
写在外部的jS中,var abc=<{$row_array}>是无法被smarty解析为正确的值的,就会造成JS语法错误。如果需要使用JS变量,则必须将变量部分写在模板文件内,这样才能被解析为正确的值

来自  http://zhidao.baidu.com/link?url=0FDcqmVG9bgD7ECVPvu8YnLi3FDjVrKnSFi1B0P52YQkoTFtuSjy91IqC31Zvfv51RgvIhG4BsOcBfBLINM38_



在使用smarty时怎么将php数据传入js中

2014-01-13 15:27喜爱游泳 | 浏览 1272 次
 PHP
<ol>
            {section name=s loop=$arr}
            	<li id="{$arr[s].id}"><a href='{$arr[s].link}{$arr[s].id}'>{$arr[s].title}</li>
            {/section}
  </ol>
这个是一个用smarty模板引擎下的一个模板文件,现在我要用jquery获取<li id="{$arr[s].id}">的id值来做一些效果怎么弄?求大神指教!
2014-01-13 15:31提问者采纳
 
1
2
3
4
5
6
7
8
<ol>
  {section name=s loop=$arr}
  <script>
    var id = {$arr[s].id};
  </script>
    <li id="{$arr[s].id}"><a href='{$arr[s].link}{$arr[s].id}'>{$arr[s].title}</li>
  {/section}
</ol>

懂了么?

追问:
这样的话,我的js页面是链接进来的,这样可以吗?
追答:
刚才理解错你问题了
如果你是想在外部的js中控制模版生成的dom元素的话,就很简单了
只要写在document.ready中就可以了
把jquery代码写在
$(function() {

})
中间就能访问到的
追问:
假如这个是js文件,我模板那样写后怎么获得 var id的值放在下面的选择器中?$(document).ready(function(){$("#id").mouseover(function(){$(this).hide();});});
如果是这样的呢?
追答:

这下理解你问题了。。

这其实算是个设计结构的问题吧

如果你想设置没有具体指向,但是普遍适用的结构,可以写在外部的js中

例如,要给这些li都添加一些效果,你可以在外部js中这么做

1
2
3
4
$("ol > li").on("mouseover",function() {
    $(this).hide();
    //do otherthing;
});

如果是有例外的情况,需要根据具体元素的具体参数进行具体操作的话

1
 <li id="{$arr[s].id}" onMouseover="doSomething({$arr[s].id})"><a href='{$arr[s].link}{$arr[s].id}'>{$arr[s].title}</li>
1
2
3
4
function doSomething(id) {
    $("#"+id).hide();
    //do otherthing;
}
提问者评价
OK,明白了,直接传值过去,多谢了!!

 
 
2014-01-13 15:33popslay | 四级
直接把php句柄放入js里即可 如 模板<script> var str =<{$str}>;</script>
追问:
假如这个是js文件,我模板那样写后怎么获得 var id的值放在下面的选择器中?
$(document).ready(function(){
$("#id").mouseover(function(){
$(this).hide();
});
});
追答:
$('#id'+<{$str}>).click({});
追问:
没有反应。
追答:
那就用动态绑定
$("ol li").mouseover(function(){
     $(this).hide();
});
追问:
这样的话如果是导航栏,里面的效果都一起变了。如果要做其中一个怎么办?
追答:
换成这个 $("ol li").each()
评论 | 0 1
2014-01-13 15:31热心网友
和你普通的用jq拿id值一个鸟样
追问:
我jq是个新手,请问这个具体要怎么拿?
评论 | 0 0
2014-01-13 15:46e_sweet | 四级
同求。。。刚刚接触php
来自  http://zhidao.baidu.com/link?url=8Ygjf1XCIY7jYpWR8EXeNZS-dXNRoSKUS3-N2Pw9rMrF1vZieomOdepZJoPtshELJWg...
普通分类: