我需要在click事件上为元素设置ID,它应该与类同名。 例如,当我点击带有class =" x"的元素时,我想设置id =" x"这个元素。
我尝试使用以下代码执行此操作,但它无法正常工作
$(this).click(function () {
if($(this).hasClass('x')){
$(this).attr('id', 'x');
console.log($(this).attr('id'));
}
});
当我将$(this)更改为指定的元素(例如$(' .x'))时,它确实有效,但我希望点击事件能够与任何点击的元素一起使用。
答案 0 :(得分:3)
您的代码应该是这样的:
var count = 0; //added a count to have unique ids
$('.x').on('click', function(){
count++;
if($(this).hasClass('x')){
$(this).attr('id', 'x_' + count);
}
});
Ids总是需要与众不同。您不能拥有相同的两个或更多ID。它与使用它们的整个概念混淆。
答案 1 :(得分:1)
你可以做简短的表格
$(document).on('click', '.x', function () {$(this).attr('id', 'x');});
ID的用途是页面中任何圆顶元素的唯一标识。因此覆盖它或为不同的元素赋予相同的值是不好的
所以我建议使用data-id属性而不是id
$(document).on('click', '.x', function () {
$(this).attr('data-id', 'x');
console.log($(this).data('id', 'x')); //for retrieve data-id
});
答案 2 :(得分:0)
我认为您的初始$(this)
并不是您实际想要点击的内容。如果您想要收听页面上的每次点击,然后对其进行测试,请将听众附加到文档并测试事件目标。
$(document).click(function (e) {
var $target = $(e.target);
if ($target.hasClass('x')) {
$target.attr('id', 'x');
console.log($target.attr('id'));
}
});
答案 3 :(得分:0)
我不确定理解,但我认为听众必须在正确的选择器上,请尝试:
$('*').click(function () {
if($(this).hasClass('x')){
$(this).attr('id', 'x');
console.log($(this).attr('id'));
}
});