从元素获取当前“data-id”:

时间:2013-11-24 16:31:05

标签: jquery alert

有这个清单:

<ul class="ui-selectable" id="box">
<li data-id=100.100></li>
<li data-id=101.100></li>
<li data-id=102.100></li>
<li data-id=103.100></li>
<li data-id=104.100></li>
<li data-id=105.100></li>
<li data-id=106.100></li>
<li data-id=107.100></li>
<li data-id=108.100></li>
<li data-id=109.100></li>
<li data-id=110.100></li>
</ul>

和此jquery获取被点击的侦听的数据ID:

$(document).ready(function(){
$('.ui-selectable :not([data-id=""])').click(function() {
    $(this).toggleClass('selected');
    $(this).parent().trigger('update');
});

$('.ui-selectable').on('update', function() {
    data = [];
    $(':not([data-id=""]).selected', this).each(function() {
        data.push( $(this).data('id') );
    });
    alert( $(this).data('id') );

});
});

但是当我点击一个听众时,我收到了这条警告信息:

"undefined"

任何人都可以告诉我为什么以及如何正确? 问候

3 个答案:

答案 0 :(得分:0)

你试过这个吗?

$(this).attr('data-id')

答案 1 :(得分:0)

试试这个:

  $(document).ready(function(){
        $('#box li').on('click',function(){
            alert($(this).attr('data-id'));
        });
    });

或尝试在您的代码中:

$('.ui-selectable li :not([data-id=""])').click(function() {
    $(this).toggleClass('selected');
    $(this).parent().trigger('update');
});

答案 2 :(得分:0)

在这种情况下,

this

有关
$('.ui-selectable').on('update', function() {

没有id数据字段。

我不知道你想做什么,但是你需要在你正在寻址其中一个this元素的上下文中使用<li>,例如

$('.ui-selectable :not([data-id=""])').click(function() {
                           <--------- put it here and it will work
    $(this).toggleClass('selected');
    $(this).parent().trigger('update');
});