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