获取单击的UL LI选择框的父DIV ID
Getting the parent DIV ID of the clicked UL LI select box
似乎我在掌握jQuery语言方面的明显尝试失败了
我正试图获取UL LI选择框的DIV id,但我的警报框返回"未定义",因此我正在寻求专家帮助。
以下是有问题的标记和代码:
<!DOCTYPE html>
<html>
<head>
<script src="jquery-1.11.3.min.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
* {
font-family: Segoe UI;
font-size: 9pt;
}
.select {
background: url(arrow.png) no-repeat scroll right top;
border: 1px solid rgb(170,170,170);
width: 180px;
padding: 3px;
}
.select:hover {
cursor: pointer;
}
.select ul {
list-style-type: none;
margin: 0;
padding: 0;
cursor: pointer;
}
.select ul li {
display: none;
padding: 1px;
}
</style>
<script type="text/javascript">
window.onload = function() {
$(".select").click(function () {
$(this).find('ul li').toggle();
});
$(".select ul li").click(function(e) {
$(this).closest('div.select').text($(this).html());
//alert($(this).closest('div.select').attr("id"))
//alert($(this).closest('[id]').attr('id'))
//alert($(this).closest('div.select').attr('id'))
});
}
</script>
</head>
<body>
<div class="select" id="numbers">Select Box1
<ul>
<li>1234</li>
<li>5678</li>
<li>0123</li>
</ul>
</div>
<br><br>
<div class="select" id="letters">Select Box2
<ul>
<li>abcd</li>
<li>efgh</li>
<li>ijkl</li>
</ul>
</div>
<br><br>
<div class="select" id="fruits">Select Box3
<ul>
<li>apples</li>
<li>bananas</li>
<li>oranges</li>
</ul>
</div>
</body>
</html>
.text($(this).html()
这一行扰乱了DOM,并导致遍历问题。我建议你使用其他方法来完成文本更改。像
$(this).closest("div").contents().first().replaceWith($(this).text());
$(".select ul li").click(function(e) {
$(this).closest("div").contents().first().replaceWith($(this).text());
var id = $(this).closest('[id]').attr('id');
alert(id);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="select" id="numbers">Select Box1
<ul>
<li>1234</li>
<li>5678</li>
<li>0123</li>
</ul>
</div>
$(".select ul li").click(function(e) {
$(this).closest('div.select').text($(this).html());
//alert($(this).closest('div.select').attr("id"))
//alert($(this).closest('[id]').attr('id'))
//alert($(this).closest('div.select').attr('id'))
});
好吧,我99%确信发生的事情是由于你分离了元素。您设置div.select的text(),它是您的select的父级。这实际上是删除了您小时候单击的li元素。所以以后当你尝试做一个最接近的动作时,它不会再返回任何东西,因为它不再是一个孩子了。在更改文本之前,您很可能需要存储这些信息,这样您就可以获得值,而无需事后查找。
$(".select ul li").click(function(e) {
var $parent = $(this).closest('div.select');
$parent.text($(this).html());
alert($parent.attr('id'));
});
相关文章:
- 禁用Tab键以进行具有特定Div ID的输入
- Bootstrap Typeahead不适用于某些Div Id's
- 使用 Jquery 选中基于 Div ID 和类的所有复选框
- 如何点击获得DIV ID
- 将DIV ID内的所有链接设置为返回false
- 在滚动过程中抓住Div id时,Div id为空
- 如何选择当前 DIV ID 以使用该 ID 运行 Jquery
- 将 Div ID 添加到 YouTube iFrame
- 添加/删除 CSS 类属性以尊重不基于 Div id 的类
- 如何根据 Div ID 内容隐藏/显示 DIV
- 如何在 javascript 中使用 DIV ID 对 DIV 产生悬停效果
- jQuery - 更改 Div ID 的值
- 在完整日历提示上获取 qTip2 Div ID
- JQuery 只查看一个 DIV ID 即可获取值
- 获取单击的UL LI选择框的父DIV ID
- 滚动按钮链接Div Id's
- 如何将DIV ID的值保存到数据库PHP&MySQL
- 循环遍历DIV id数组,并每隔x秒刷新这些DIVS
- 通过Javascript获取父GridView中的Div Id
- 错误地获取DIV ID