我的元素有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");
};
答案 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");
})
})