获取具有动态ID的clicked div的属性

时间:2014-11-02 03:59:52

标签: javascript jquery html attr

我需要获取div的'role'属性,其中包含动态生成的ID以及下面的代码。

HTML:

<div id="renable0" role="0">
     false
</div>
<div id="renable1" role="1">
    true
</div>
<!-- THE LIST OF DIVS CONTINUES IN INCREASING INCREMENTS OF 1 -->

使用Javascript:

$("[id^='renable']").editInPlace({ // editInPlace is a jQuery plugin
    url: 'save.php',
    params: 'pos='+$(this).attr('role') // How can I get this role attribute for the clicked div?
});

2 个答案:

答案 0 :(得分:3)

您需要使用.each()循环:

$("[id^='renable']").each(function() {
    $(this).editInPlace({
        url: 'save.php',
        params: 'pos='+$(this).attr('role')
    });
});

如果editInPlace允许params选项成为函数,那将会很好,就像其他一些jQuery插件为类似选项所做的那样。但既然没有,你需要这样做。

顺便说一下,您对role属性的使用与它打算用作ARIA的一部分的方式不匹配。标准角色包括buttonmenuitem。您不应滥用此类标准属性,也不应构成自定义属性。如果您想在元素中添加额外的属性,请使用data-XXX元素,例如

<div id="renable0" data-role="0">

您可以使用$(this).data('role')在jQuery中访问它。

答案 1 :(得分:0)

this不会引用您的元素,您应该引用它:

// loop through your elements
$("[id^='renable']").each(function () {
    // keep reference to it
    var $elem = $(this);

    // make it editInplace
    $elem.editInPlace({
        url: 'save.php',
        params: 'pos='+$elem.attr('role')
    });
});