JQuery菜单a href选择li
JQuery menu a href selecting the li
我似乎想不通,我知道我查过一些类似的问题,但出于某种原因,它们对我没有帮助。我有这样的菜单:
<ul id="menu">
<li>
<a href="#" value="selectCar">Select Car</a></li>
<ul>
<li><a href="#" value="ford">Ford</a></li>
<li><a href="#" value="mustang">Mustang</a></li>
</ul>
</li>
<li>
<a href="#" value="selectModel">Select Model</a>
<ul>
<li><a href="#" value="f500">F500</a></li>
<li><a href="#" value="z2000">Z2000</a></li>
</ul>
</li>
</ul>
我从之前的问题中知道,获得价值可以通过以下方式完成:
$("#menu").change(function() {
var selected = $(this).val();
console.log(selected);
});
但当我单击这些选项时,我的控制台中没有任何记录。至少select car选项和select model选项应该是logging。我该如何解决这个问题,以及如何获得每个子菜单的选项(即福特、野马用于selectCar)?
您需要触发click
事件,而不是change
。
$("#menu a").click(function() {
var selected = $(this).val();
console.log(selected);
});
然而,您的标记并不特别适合我认为您正在努力实现的目标。正如评论中所建议的,你最好为每个选择都有一个select
,然后你可以在change
上触发它。
听起来像是在谈论一个select/options控件,而不是ul/li控件。如果您需要使用make/models进行级联选择,我建议使用jquery链式插件:http://www.appelsiini.net/projects/chained。他们展示了一个如何做到这一点的例子。
尝试这个
$("#menu a").click(function() {
var value = $(this).attr('value');
console.log(value);
});
我会将HTML重组为选择下拉列表,而不是无序的链接列表:
<select id="selectCar">
<option value="ford">Ford</option>
<option value="mustang">Mustang</option>
</select>
<select id="selectModel">
<option value="F500">F500</option>
<option value="z2000">Z2000</option>
</select>
jQuery对您来说几乎保持不变:
$("select").change(function() {
var selected = $(this).val();
console.log(selected);
});
JSFiddle
您的代码有一些错误。首先,你混淆了元素,以及它们触发了什么事件。例如,在选择时更改事件触发器。
<select>
<option value="ford">Ford</option>
</select>
如果你确实想使用ul来实现这一点,那么对于a元素,你可以监听a元素上的点击事件,然后将属性值更改为数据值。如果你用数据作为属性的前缀,它将被验证为正确的html5,你可以用它做你想做的事。
html:
<li><a href="#" data-value="ford">Ford</a></li>
javascript:
$("#menu a").on("click", function() {
var selected = $(this).attr("data-value");
console.log(selected);
});
a元素通常没有value属性。如果你想看一看的话,我给你做了一把小提琴。
http://jsfiddle.net/xqga7h4x/
尝试使用click,因为它不是一个输入,而使用.html(),因为没有值:
$("#menu").find('a').click(function() {
var selected = $(this).html();
console.log(selected);
});
Hi"a"标记通常不使用值。为了清晰起见,请更改它并使用自定义属性。像这样:
<ul id="menu">
<li>
<a href="#" info="selectCar">Select Car</a></li>
<ul>
<li><a href="#" info="ford">Ford</a></li>
<li><a href="#" info="mustang">Mustang</a></li>
</ul>
</li>
<li>
<a href="#" info="selectModel">Select Model</a>
<ul>
<li><a href="#" info="f500">F500</a></li>
<li><a href="#" info="z2000">Z2000</a></li>
</ul>
</li>
</ul>
并使用选择器与一个,没有它"这"将尝试从"菜单"id而不是子链接获取数据:
$("#menu a").click(function() {
var selected = $(this).attr('info');
console.log(selected );
});
https://jsfiddle.net/ggfbpeso/3/
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- 如何在选择子li时将父li类设置为活动
- 如何根据下拉菜单中选择的内容为li项分配不同的类
- 为什么使用 .next() 选择所有 li 项而不是一个
- 如何使用 jQuery 选择上一个 LI
- Jquery #id ul li 一个选择
- 转换UL->li inot为同位素过滤菜单选择的列表
- 通过从li中选择一个值来自动完成具有多个值的文本框
- 如何在 LI 上触发“选择”事件,由其 ID 标识
- 转到 指定文本 在基于 ul li 的选择框中
- 可排序的 Js 在带有选择/选项标签的 chrome 中不起作用,但与 ul/li 标签一起工作
- 选择 li 元素中的文本,而不是子元素
- 在选择 li 后使用 JSP 自动完成,建议文本输入丢失其选择器
- 在选择li项时更改无序列表的值
- 使用JQuery选择li元素内的第一个锚点
- 如果存在,请选择li classname
- 在jquery中选择子Li时未选择Li父元素
- JQuery菜单a href选择li
- jQuery:在活动查询上面选择li
- JQuery选择li进行分页