0

以下是我拥有的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() 函数似乎在这里不起作用。请帮帮我。

4

3 回答 3

2

由于this单击的是 DOM 元素,因此您无需间接通过id获取其属性。只是:

$(function(){
    $('.green-column, .red-column, .grey-column').click(function() { 
         $("<div>" + $(this).attr("data-type") + "</div>").dialog();
    });
});

示例小提琴

但是由于您的代码确实可以工作,前提是您不是处于严格模式(除非它通过不声明变量而成为隐式全局恐怖的牺牲品id_clicked),您需要查看 JavaScript 控制台等以找出答案还有什么导致它无法正常工作。

于 2013-03-16T14:18:48.440 回答
0

尝试:

$(function(){
 $('.green-column, .red-column, .grey-column').click(function() { 
     $("<div>" + $(this).data("type") + "</div>").dialog();
 });
});

获取点击的元素使用$(this)并获取data-type价值使用.data()

于 2013-03-16T14:18:49.267 回答
0

试试这个 :

$(function(){
    $("div").click(function(){
        var div_id = $(this).attr("id");
        $("<div>" + $("#"+div_id).attr("data-type") + "</div>").dialog();
    });
});

演示:http: //jsfiddle.net/7gxeY/1/

于 2013-03-16T14:19:04.487 回答