错误地获取DIV ID
getting DIV ID erroneously
我有一个代码,可以选择类似div的页面元素,并通过颜色选择器插件更改其颜色。。然而,当我点击一个div时,它只读取第一个div的ID。。并且只更改同一个div。即使我单击另一个div,它也会一直读取正文中的第一个div。对如何处理有什么建议吗?这是代码。:D
$(document).ready(function() {
var elementTag;
var divID;
$("#modalPicker").dialog({
show: "blind",
hide: "explode",
height: 299,
width: 247,
modal: true,
autoOpen: false,
open: function(){
$('#picker').farbtastic(function(color) {
$("#"+divID).css("background-color", color);
});
}
});
$("BODY").click(function(event){
elementTag = event.target.nodeName;
alert(elementTag);
if($(""+elementTag).attr('id') != undefined)
{
divID = $(""+elementTag).attr('id');
//divID = this.id;
alert(divID);
$(this).removeClass();
$("#modalPicker").dialog("open");
}
else if($(""+elementTag).attr('id') == undefined)
{
alert("no ID for this element!");
}
});
});
</script>
<body style="border:#00CCFF; border-bottom-style:dashed">
<div id="HEADER" style="size: 500px">HEADER</div>
<div id="BODY" style="height:700 px; width:1024; border: 20 px">BODY</div>
<div id="FOOTER" style="height: 400 px; width: 500 px; border-bottom-color:#000000">FOOTER</div>
<span> SIMON </span>
<li> here
<ul>SIMON</ul>
</li>
<div id="modalPicker">
<div id="picker"></div>
</div>
</body>
您总是在html中获得第一个div。element.target.nodeName
将返回DIV(如果您单击DIV),然后您只得到第一个DIV的Jquery对象。
我认为您需要改变将jquery DIV创建为的方式
var div = $(event.target)
var divID = div.attr("id");
您将一个标记名称(div
、input
等)作为选择器传递给jQuery函数,它将返回一个包含所有具有该标记的元素的集合,在本例中,是页面上的所有<div>
元素。调用返回值(而不是设置值)的函数(如val()
或attr()
)只作用于返回的集合中的第一个元素。
因此,当您点击代码中的anydiv时,它会得到一组所有<div>
元素,但随后会得到匹配的第一个元素(第一个<div>
)的ID,然后在稍后调用的dialog()
函数中使用。
更改代码以访问单击的元素的id
属性,而不是像现在这样使用标记选择器:
$("BODY").click(function(event){
var $id = $(event.target).attr('id');
if($id != undefined)
{
divID = $id;
alert(divID);
$(this).removeClass();
$("#modalPicker").dialog("open");
}
else
{
alert("no ID for this element!");
}
});
Anthony的解释很好,另一个选项是直接从event.target对象获取id。http://jsfiddle.net/gaboesquivel/XDUM2/
我还在你的函数"var"中添加了变量定义("全局是邪恶的"),stopPropagation和preventDefault调用
相关文章:
- Href:当前DIV中的目标ID
- 禁用Tab键以进行具有特定Div ID的输入
- Bootstrap Typeahead不适用于某些Div Id's
- 在 AJAX 调用中发送 DIV 元素的 ID
- 使用 Jquery 选中基于 Div ID 和类的所有复选框
- 在具有特定ID的DIV中使用JavaScript动态添加HTML元素
- jquery没有't从DIV数据id中获取PHP变量值,只输出变量名
- 查找父DIV的ID并淡出DIV
- 如何获取并返回包含Id的Div
- JQuery中ID相同的不同Div返回的相同数据
- 如何点击获得DIV ID
- 将DIV ID内的所有链接设置为返回false
- 在滚动过程中抓住Div id时,Div id为空
- 如何使用JQuery.Load访问Div中加载URL的UL“id”,“name”等,以设置JQuery树视图
- 如何选择当前 DIV ID 以使用该 ID 运行 Jquery
- 如何使用 id 删除 JavaScript 中的 Div 元素
- 将 Div ID 添加到 YouTube iFrame
- 使用没有 ID 和标签名称的 javascript 更改 DIV 文本
- 添加/删除 CSS 类属性以尊重不基于 Div id 的类
- JQuery 仅显示特定 id Div