貌似表情辅助函数可以完善得更好啊
一个页面如果用到多次表情,就需要放到不同的容器里,因此insert_smiley()参数不同,插入表情每次都需要查询然后加载。我觉得表情的模板都是相同的,因此应该是可以把加载后的表情HTML放到一个JS变量里。其他地方需要用到表情的时候,就把JS变量直接写入DIV,现在自己利用表情的IMG的ALT属性 来动态更改insert_smiley()的参数。
当然 可以直接改原来的表情函数 或者扩展 。。 嗯,完善后可以放出与大家分享 这个只针对一个页面内 需要有多个地方插入表情。
没有改原来的PHP函数。只是通过JS 加上设置表情来实现。
1 设置表情img 里的alt属性 ,通过alt属性,可以获得表情的数组KEY。我用的是类似以下的数组
'[大兵]' => array('dabing.gif', '24', '24', '大兵'),
通过alt属性'大兵'加上'[' ']'就可以获得该表情的KEY
2 JS函数
var smileys='';//作为储存表情HTML的变量
//获取表情 eid 文本输入框ID, show_eid 表情ID
function get_smileys(eid,show_eid)
{
if(!eid || !show_eid || $('#'+show_eid+' .smileys').html()) return false;//show_eid的一个class为smileys的div作为表情容器
if(smileys)//如果JS变量已经储存了表情的HTML,可以直接写入
{
$('#'+show_eid+' .smileys').html(smileys);向容器写入html
//自己重新给表情绑定 insert_smiley函数,通过ALT获取KEY
$('#'+show_eid+' .smiley a').attr('onclick','insert_smiley("['+$('#'+show_eid+' .smiley img').attr('alt')+']", "'+eid+'")');
}
else//否则就需要AJAX查询
{
//这里根据自己需要 查询
var myAjax = $.post(
'smileys',
{
eid:eid
},
function(r)
{
if(r.html)//我把表情的HTML都放在r.html里
{
$('#'+show_eid+' .smileys').html(r.html);
smileys = r.html;//写入后还需要把这个结果给JS变量 以便下次使用
}
else
{
var msg = r.msg ? r.msg : '未知错误,获取表情失败,请刷新再试';
alert(msg);
return false;
}
},
'json'
);
}
}
3 document ready的时候 给需要的文本域 绑定表情
4 最后 当然还需要写一个容器的事件,使得容器在鼠标移入可以显示出来...
页:
[1]