我正在jQuery中构建自定义下拉菜单。 现在我想将A.select元素的文本设置为单击元素的文本。但我无法让它发挥作用。
这是html:
<div class="pulldown">
<a href="javascript:;" class="select">All cats/subs</a>
<div class="options">
<a href="javascript:;">Option one A</a>
<a href="javascript:;">Option two A</a>
<a href="javascript:;">Option three A</a>
<a href="javascript:;">Option four A</a>
</div>
</div>
这是jQuery代码:
$(document).ready(function() {
$('div.pulldown').toggle(function() {
$(this).css('z-index','110');
$('.options', this).css('z-index','100').show('fast');
$('.options A', this).click(function(){
var value = $(this).text();
$(this).closest('DIV.pulldown A.select').text(value);
});
}, function(){
$(this).css('z-index','10');
$('.options', this).css('z-index','0').hide('fast');
}); });
我在这里缺少什么?
答案 0 :(得分:0)
您应该为整个div设置一个全局变量,并将其用作参考
$(document).ready(function() {
/*Grab the div into a variable*/
var Pulldown = $('div.pulldown');
/*Set up your event handlers*/
$('.options a', Pulldown).click(function(){
var value = $(this).text();
$('.select',Pulldown).html(value);
});
/*Toggle the pulldown*/
Pulldown.toggle(function() {
Pulldown.css('z-index','110');
$('.options', Pulldown).css('z-index','100').show('fast');
}, function(){
Pulldown.css('z-index','10');
$('.options', Pulldown).css('z-index','0').hide('fast');
});
});
这里的实例:
答案 1 :(得分:0)
如果您稍微清理HTML,将更容易使用
<dl class="menu">
<dt class="topItem">All cats/subs</dt>
<dd class="subItem">Option one A</dd>
<dd class="subItem">Option two A</dd>
<dd class="subItem">Option three A</dd>
</dl>
然后你的jQuery归结为:
$(function() {
var $topItem = $('.topItem');
var $subItems = $('.subItem');
$topItem.bind('click', function() {
$subItems.toggle();
});
$subItems.bind('click', function() {
$topItem.text($(this).text());
$subItems.toggle();
});
});
可以在http://jsfiddle.net/c8Qp8/找到现场演示。
注意,需要扩展此示例以处理具有多个子项的多个菜单。此外,您应该使用样式表设置CSS属性,而不是使用JavaScript设置CSS属性。