以下是我的div:
<div class="grey-column" id="infoblock1" data-type="datahere"></div>
<div class="green-column" id="infoblock2" data-type="datahere"></div>
<div class="red-column" id="infoblock3" data-type="datahere"></div>
我试图找出被点击的元素的id,我有这个代码:
$(function(){
$('.green-column, .red-column, .grey-column').click(function() {
id_clicked = this.id;
var id_final = '#';
id_final += id_clicked;
$("<div>" + $(id_final).attr("data-type") + "</div>").dialog();
});
});
因此,每当用户单击div时,将触发click函数,并找到单击该元素的id。但attr()函数似乎不适用于此。请帮帮我。
答案 0 :(得分:2)
由于this
是点击的DOM元素,因此您无需间接通过id
来获取其属性。只是:
$(function(){
$('.green-column, .red-column, .grey-column').click(function() {
$("<div>" + $(this).attr("data-type") + "</div>").dialog();
});
});
但是,由于您的代码does work提供的不是严格模式(除非通过不声明id_clicked
变量而成为The Horror of Implicit Globals的牺牲品),否则您需要查看JavaScript控制台等,以了解 else 正在发生什么阻止它正常工作。
答案 1 :(得分:0)
尝试:
$(function(){
$('.green-column, .red-column, .grey-column').click(function() {
$("<div>" + $(this).data("type") + "</div>").dialog();
});
});
要使点击的元素使用$(this)
并使data-type
值使用.data()
答案 2 :(得分:0)
试试这个:
$(function(){
$("div").click(function(){
var div_id = $(this).attr("id");
$("<div>" + $("#"+div_id).attr("data-type") + "</div>").dialog();
});
});