如何在7中获得“数据”属性?

时间:2011-09-09 12:04:05

标签: javascript html5 internet-explorer-7

我使用“数据”属性并在IE7中,我不知道如何获得它的价值。 jQuery可以帮助我吗?

我有这个

window.event.srcElement.getAttribute('data-pk')

当然它不起作用。

编辑:

for (i=0; i < max; i++) {

    if (typeof attachEvent == 'undefined'){         
        //open[i].addEventListener('click', function(e){ openSlide(e.currentTarget.getAttribute('data-pk')), false});
        open[i].onclick = function(e){ openSlide(e.currentTarget.getAttribute('data-pk')), false};
    } else {
        open[i].attachEvent('onclick', function(){
            openSlide(window.event.srcElement.getAttribute('data-pk'))}, false);
    };
};

HTML

<div>                             
    <img class='image' data-pk='18' src='/site_media/media/img/120x180.jpg'>                             
    <img class='image' data-pk='13' src='/site_media/media/img/007b-300x224.jpg'>                             
    <img class='image' data-pk='15' src='/site_media/media/img/IMG_0549_1.jpg'>                             
</div> 

4 个答案:

答案 0 :(得分:12)

jQuery可以帮助...数据属性与jQuery中的data()函数一起使用。

$(srcElement).data('pk');

您可以将它与任何数据属性一起使用,例如,如果您有:

<div id="DivId" data-something="foo" data-somethingElse="bar">

您可以通过以下方式获取数据:

$('#DivId').data('something');
$('#DivId').data('somethingElse');

设置数据:

$('#DivId').data('something', 'foo');
$('#DivId').data('somethingElse', 'bar');

以下是jQuery .data()

的链接

修改

我想你想要:

$('.image').click(function () {
    openSlide($(this).data('pk'), false);
});

答案 1 :(得分:1)

最佳答案已过时。给定示例<div id="DivId" data-somethingElse="bar"></div>,您必须执行$('#DivId').data('somethingelse')才能获取数据。更好的标准方法是在HTML中使用snake case,这将在JavaScript中产生camelcase:

HTML:

<div id="foo" data-something-else="bar"></div>

JS:

alert($('#foo').data('somethingElse')); // Alerts "bar"

答案 2 :(得分:0)

在jQuery中,您可以使用数据方法,如下所示:

$(srcElement).data('pk');

请注意,传入数据的字符串只是'pk',您只需删除属性的'data-'部分。

答案 3 :(得分:0)

您可以使用jQuerys(或其他库)attr getter。或者您可以查看jQuery source并了解它们如何实现跨浏览器的一致性。