0

3 つの 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

これは、存在しない変数に代入 します。imageIdimageBoxOne

を使用してそれらを比較、 を使用して文字列リテラル===が必要です。"..."

また、imageId実際にはイベント オブジェクトです。からハンドラを追加した要素を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ます。

以下の場合。imageBoxOneの値をに割り当てて、imageIdを使用する必要があります==

imageId = imageBoxOne
于 2012-12-10T19:50:47.640 に答える