通过了解data-attribute id,使用jquery查找元素

时间:2014-03-30 16:38:17

标签: javascript jquery

我的元素有id myId,除了其他数据属性有data-myControlId之类的

<a id="myId" onclick="Test(this)" ... data-... data-... data-myControlId="999" role="button">
 Click me
</a>

因为具有此myId的按钮在foreach循环中呈现多次,所以如何通过其data-controlId识别被点击的元素,因为此属性是唯一的。我想在我的javascript函数中使用jquery识别它,所以我可以删除css类,如

 function Test(myObj){
        var clickedItem = ...
        clickedItem.removeClass("myClass");
    };

2 个答案:

答案 0 :(得分:1)

一种可能的方法:

$('[data-myControlId="' + numberToLookFor + '"]');

...但是,正确地注意到,您不能拥有多个具有相同ID的元素。而且,坦率地说,我无法理解将 ID 视为一种复合键属性有什么问题。像这样:

<a id="control-999">Click me</a>

找到相应的元素将是微不足道的:

$('#control-' + numberToLookFor);

答案 1 :(得分:0)

元素的第一个 ID必须是UNIQUE ...(不要使用ID属性,除非你可以保持它们的唯一性,因为它对重复值没有任何意义,在这种情况下你可以删除它)

第二,因为你将this传递给Test它是被点击的dom元素引用,所以你可以使用它来获取jQuery对象引用,如

function Test(myObj){
    var clickedItem = $(this)
    clickedItem.removeClass("myClass");
};

第三,我建议使用jQuery事件处理程序,而不是使用内联一次


为所有目标元素添加一个公共类,如

<a id="myId" class="myclass" ... data-... data-... data-myControlId="999" role="button">
    Click me
</a>

然后

jQuery(function ($) {
    $('.myclass').click(function () {
        var clickedItem = $(this);
        clickedItem.removeClass("myClass");
    })
})