关于一个批量仿select的jquery代码 本帖最后由 mbaun 于 2014-01-14 01:07:01 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用插件吧~http://js.itivy.com/?p=197 $('div[id^="selects_"]').click(function() { var select_id=$(this).attr("id").split("_")[1]; $('em', this).toggleClass('down'); $('#select_'+select_id).toggle(); $("#select_"+select_id+" a").click(function(){ console.log($(this).html()); });});这样改一下试试,你的那种写法,是在点击之后才有select_id的值呢,可是绑定是在文档加载完就绑定的。而且,也有作用域的问题啊,外面是读取不到select_id的值的。所以得放在里面。 直接给dl中的a注册事件,反正你id都是又规则的,获取到dl的id反推出div的id<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script><div id="select"> <div class="selects" id="selects_1"><span value="-1">-类型选择1</span><em></em></div> <dl id="select_1" style="display:none"> <dd><a href="#s1" value="1">类型一</a></dd> <dd><a href="#s2" value="2">类型二</a></dd> </dl> </div> <input type="text" name="leixing_1" id="leixing_1" value='' /></div><div id="select"> <div class="selects" id="selects_2"><span value="-1">-类型选择2</span><em></em></div> <dl id="select_2" style="display:none"> <dd><a href="#s1" value="1">类型三</a></dd> <dd><a href="#s2" value="2">类型四</a></dd> </dl> </div> <input type="text" name="leixing_2" id="leixing_2" value='' /></div><script> $(function () { $('div[id^="selects_"]').click(function () { var select_id = $(this).attr("id").split("_")[1]; $('em', this).toggleClass('down'); $('#select_' + select_id).toggle(); }); //此处写点击第一个层后的代码,目前这样写获取不到上面的select_id $('dl a').click(function () { var dl=$(this).closest('dl'),id = dl.attr('id').split('_'); var _text = $(this).text(); dl.hide(); $('#selects_' + id[1]).find('span').text(_text).end().find('em').removeClass('down'); $('#selects_' + id[1]).find('span').attr("value", $(this).attr("value")); $('#leixing_' + id[1]).attr("value", $(this).attr("value")); return false; }); });</script> 数组存储DOM节点对象 求一个正则表达式(偶数字符匹配) struts 反选 删除 问题 动太判断表单元素是否为空 关于一小段程序调试的问题?回复就给分 再次郁闷!!寻梦的稻草人及JS高人请进! **在javascript中如何使窗口不可见?** 高手救命,1000都肯给 微软主页那样的菜单,是怎么做的?100分奉上,在线等…… 变量引入,引号,加号的使用问题 docment.write一个层,如何显示 请教:用JavaScript实现简单表格操作
var select_id=$(this).attr("id").split("_")[1];
$('em', this).toggleClass('down');
$('#select_'+select_id).toggle();
$("#select_"+select_id+" a").click(function(){
console.log($(this).html());
});
});这样改一下试试,你的那种写法,是在点击之后才有select_id的值呢,可是绑定是在文档加载完就绑定的。而且,也有作用域的问题啊,外面是读取不到select_id的值的。所以得放在里面。
<div id="select">
<div class="selects" id="selects_1"><span value="-1">-类型选择1</span><em></em></div>
<dl id="select_1" style="display:none">
<dd><a href="#s1" value="1">类型一</a></dd>
<dd><a href="#s2" value="2">类型二</a></dd>
</dl>
</div>
<input type="text" name="leixing_1" id="leixing_1" value='' />
</div>
<div id="select">
<div class="selects" id="selects_2"><span value="-1">-类型选择2</span><em></em></div>
<dl id="select_2" style="display:none">
<dd><a href="#s1" value="1">类型三</a></dd>
<dd><a href="#s2" value="2">类型四</a></dd>
</dl>
</div>
<input type="text" name="leixing_2" id="leixing_2" value='' />
</div>
<script>
$(function () {
$('div[id^="selects_"]').click(function () {
var select_id = $(this).attr("id").split("_")[1];
$('em', this).toggleClass('down');
$('#select_' + select_id).toggle();
});
//此处写点击第一个层后的代码,目前这样写获取不到上面的select_id $('dl a').click(function () {
var dl=$(this).closest('dl'),id = dl.attr('id').split('_');
var _text = $(this).text();
dl.hide();
$('#selects_' + id[1]).find('span').text(_text).end().find('em').removeClass('down');
$('#selects_' + id[1]).find('span').attr("value", $(this).attr("value"));
$('#leixing_' + id[1]).attr("value", $(this).attr("value"));
return false;
});
});
</script>