我似乎无法弄清楚这一点,我知道有类似的问题我已经查了但是由于某些原因他们没有帮助我。我有一个这样的菜单:
<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);
});
但是当我点击这些选项时,我的控制台中没有记录任何内容。至少选择汽车选项和选择型号选项应该是记录。我如何解决这个问题,以及如何获得每个子菜单的选项(即Ford,Mustang for selectCar)?
答案 0 :(得分:3)
您需要触发click
事件,而不是change
。
$("#menu a").click(function() {
var selected = $(this).val();
console.log(selected);
});
然而,你所拥有的标记并不是特别适合我认为你想要实现的目标。根据评论中的建议,您最好为每个选项设置select
,然后可以在change
上触发。
答案 1 :(得分:2)
听起来你在谈论选择/选项控件,而不是ul / li控件。如果您需要使用make / models进行级联选择,我建议使用jquery链接插件:http://www.appelsiini.net/projects/chained。他们展示了如何做到这一点的一个例子。
答案 2 :(得分:2)
答案 3 :(得分:2)
试试这个
$("#menu a").click(function() {
var value = $(this).attr('value');
console.log(value);
});
答案 4 :(得分:2)
我会将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);
});
答案 5 :(得分:1)
尝试使用click,因为它不是输入,而.html()因为没有值:
$("#menu").find('a').click(function() {
var selected = $(this).html();
console.log(selected);
});
答案 6 :(得分:1)
嗨&#34; a&#34;为了清晰起见,标记通常不会使用值更改它并使用自定义属性。 像这样:
<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>
并使用选择器a,没有它&#34;这个&#34;将尝试从菜单中获取数据&#34; id不是子链接:
$("#menu a").click(function() {
var selected = $(this).attr('info');
console.log(selected );
});