欢迎各位兄弟 发布技术文章
这里的技术是共享的
正确答案
写在外部的jS中,var abc=<{$row_array}>是无法被smarty解析为正确的值的,就会造成JS语法错误。如果需要使用JS变量,则必须将变量部分写在模板文件内,这样才能被解析为正确的值
来自 http://zhidao.baidu.com/link?url=0FDcqmVG9bgD7ECVPvu8YnLi3FDjVrKnSFi1B0P52YQkoTFtuSjy91IqC31Zvfv51RgvIhG4BsOcBfBLINM38_
<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值来做一些效果怎么弄?求大神指教!
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,明白了,直接传值过去,多谢了!!
假如这个是js文件,我模板那样写后怎么获得 var id的值放在下面的选择器中? $(document).ready(function(){ $("#id").mouseover(function(){ $(this).hide(); }); });
$('#id'+<{$str}>).click({});
没有反应。
那就用动态绑定 $("ol li").mouseover(function(){ $(this).hide(); });
这样的话如果是导航栏,里面的效果都一起变了。如果要做其中一个怎么办?
换成这个 $("ol li").each()