jQuery这个选择器不适用于Image

时间:2010-12-16 18:10:12

标签: javascript jquery html css

好吧,我有一堆具有相同ID“mashupButton”的图片,但是我的印象是,如果我使用“this”创建一个jQuery click函数,而不是“#mashupButton”它只会执行单击图像上的功能。这适用于我,但仅适用于页面上具有该ID的第一张图片,并且在我完成一次后,它不再有效。

文档准备好后:

$("#mashupButton").click(function()
                {
                    $(this).effect("drop", {direction:"up"}, 1000);
                });

标签就像:

<a href="#" onClick="differentFunction"><img src="imagename.png" id="mashupButton"></a>

所以澄清一下: 我说有10个图像都带有ID mashupButton - 我有一个jQuery效果,当它被点击时在该特定图像上执行。但是它只适用于这些图像的第一个,即使它们都包含相同的ID。我是否需要为每个人提供唯一的ID,或者以某种方式以这种方式实现?

5 个答案:

答案 0 :(得分:8)

页面中“id”属性的值必须是唯一的。重复使用“mashupButton”作为“一堆”图像的“id”是不正确的标记。每个<img>标记必须有自己唯一的“id”(当然,根本没有“id”)。当然,您可以使用“class”属性将这些<img>元素标记为“click”处理程序的候选元素。

答案 1 :(得分:2)

  

我说10张图片都带有ID mashupButton

拥有多个具有相同ID的元素是违法的。

如果要使用一个选择器,则应添加一个类名。

答案 2 :(得分:2)

要扩展@ Pointy的答案......是的,id值必须是唯一的。如果您可以更改标记,只需将id属性更改为类属性。

<img src="imagename.png" class="mashupButton" ...

然后你的jQuery看起来像:

$( '.mashupButton' ).click( function() ...

答案 3 :(得分:2)

你有一个语法无效的页面。当您遇到麻烦时,在进一步查看之前,您应始终validate your HTML(和validate your CSS)。

答案 4 :(得分:1)

而是为这些图像创建一个类,然后使用jQuery将点击添加到所有图像。

$(".mashupButton").click(function()
                {
                    $(this).effect("drop", {direction:"up"}, 1000);
                });


<a href="#" onClick="differentFunction"><img src="imagename.png" class="mashupButton"></a>