0

我有三个 div,我想为它们添加一个点击功能。理想情况下,我希望他们都使用相同的功能并使用他们的 ID 作为参数

当我运行它时,无论我单击哪个框,我都会收到带有“leftBox”的警报。

有人可以解释我做错了什么吗?

$('<div id="imageBoxOne">< src="images/carOne.jpg"></div>');
$('<div id="imageBoxTwo">< src="images/carTwo.jpg"></div>');
$('<div id="imageBoxThree">< src="images/carThree.jpg"></div>');

$("#imageBoxOne").click(moveImages);
$("#imageBoxTwo").click(moveImages);
$("#imageBoxThree").click(moveImages);

function moveImages(imageId) {
    if (imageId = imageBoxOne){
        alert('leftBox');
    }

    else if (imageId = imageBoxTwo){
        alert('middleBox');
    }
    else {
            alert('rightBox');
    }
};
4

5 回答 5

4

在您的函数imageId中指的是事件对象,而不是元素的 ID,您应该使用this关键字。另请注意,您正在设置值而不是比较它。

function moveImages(imageId) {
    if (this.id === 'imageBoxOne') { 
        alert('leftBox');
    }
    // ...
于 2012-12-10T19:50:00.620 回答
2
imageId = imageBoxOne

分配 imageId给不存在的imageBoxOne 变量

您想使用比较它们===,并且您想要使用 的字符串文字"..."

另外,imageId实际上是事件对象。您可以从 from 获取添加了处理程序的元素this,并获取其id属性 ( this.id)

于 2012-12-10T19:49:22.557 回答
1

点击事件传递的参数就是事件,它包含了很多信息。您可以像这样获取 ID:

function moveImages(e) {
  var id = e.target.id;
}

要获取父 div 的 id:

function moveImages(e) {
   var id = $(e.target).parent().attr('id');
}
于 2012-12-10T19:50:07.520 回答
0

您使用“=”而不是“==”或通常更好的“===”。

于 2012-12-10T19:49:35.550 回答
0

您可以this.id在函数内部使用它。

当您执行以下操作时。您将 的值分配imageBoxOneimageId您应该使用==.

imageId = imageBoxOne
于 2012-12-10T19:50:47.640 回答