如何在jQuery中传递div Id作为参数?

时间:2012-12-10 19:47:32

标签: jquery function click

我有三个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');
    }
};

5 个答案:

答案 0 :(得分:4)

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

function moveImages(imageId) {
    if (this.id === 'imageBoxOne') { 
        alert('leftBox');
    }
    // ...

答案 1 :(得分:2)

imageId = imageBoxOne

imageId分配给不存在的imageBoxOne 变量

您希望使用=== 比较,并希望使用"..." 字符串文字

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

答案 2 :(得分:1)

click事件传递的参数是事件,其中包含大量信息。你可以得到这样的ID:

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

获取父div的id:

function moveImages(e) {
   var id = $(e.target).parent().attr('id');
}

答案 3 :(得分:0)

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

答案 4 :(得分:0)

您可以使用函数内的this.id来获取它。

执行以下操作时。您将imageBoxOne的值分配给imageId,您应该使用==

imageId = imageBoxOne