jQuery: 点击每个以特定ID开头的元素

16
我试图找到所有以字符串“matchItem_”开头的id,并为每个定义一个点击事件。当点击时,我想要执行一个带有URL参数的脚本并更改此id元素中的图像。不幸的是,我的语法不正确,我也尝试过使用“.each.function”,但没有成功。
$('[id^="matchItem_"]').each {
    
    $(this).click(){
     //...execute my script.php?urlparam=xx....;
     $(this).find('img').attr('src','/admin/images/ok.png');
    }

}

可能是重复问题:https://dev59.com/PnVC5IYBdhLWcg3wxEJ1 - PhD
2个回答

30

不需要使用 each

$('[id^="matchItem_"]').click(function() {
   // do something
   $(this).find('img').attr('src','/admin/images/ok.png');
});

1
猜测有很多项要匹配... :p - Mrchief

17
您的语法无效,因为您忘记了函数。
$('[id^="matchItem_"]').each(function() {
    $(this).click(function(){
           //...execute my script.php?urlparam=xx....;
         $(this).find('img').attr('src','/admin/images/ok.png');
    });
});

如果你只是在分配 .click() 处理程序,你可以不使用 .each()

$('[id^="matchItem_"]').click(function(){
       //...execute my script.php?urlparam=xx....;
     $(this).find('img').attr('src','/admin/images/ok.png');    
});

这是因为大多数jQuery方法会自动作用于jQuery对象中的每个元素。
(编辑以在代码中添加闭括号)

@michbeck:不客气。顺便说一下,如果所有元素都是相同的标签类型,比如 <div>,如果在你的选择器中包含标签,那么你将获得更好的性能。$('div[id^="matchItem_"]') - user113716

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接