2012-03-12 9 views
1

を持つ2枚の画像に対して実行することはできませんなぜ私は画像jqueryの関数が同じID

$(document).ready(function() { 
     $("#to-get-bigger").mouseover(function() { 
      $(this).effect("bounce", { time: 3, distance: 40 }); 
     }); 
    }); 

と私は2次したビュー上をバウンスするために私のasp.net MVCアプリケーション内で次のスクリプトを持っています同じIDの画像: -

<a href="@Url.Action("StartAssessment", "StartAssessment", new { assessmentid = Model.AssessmentID })" 
onclick = "return confirm('This will make the Assessment avilable for the regestred user.')" > 
    <img id = "to-get-bigger" border="0" src="@Url.Content("~/content/images/assessment-button1.jpg")" alt="start assessment" /> 
</a> 

<a href="@Url.Action("StartAssessment", "StartAssessment", new { assessmentid = Model.AssessmentID })" 
onclick = "return confirm('This will make the Assessment avilable for the regestred user.')" > 
    <img id = "to-get-bigger" border="0" src="@Url.Content("~/content/images/assessment-button1.jpg")" alt="start assessment" /> 
</a> 

しかし、問題は、それが第二の画像上では動作しませんしながら、私は読んだことがあるが、jQueryの機能のみが,,実行し、一つの画像をバウンスすることで、この中にjQueryのセレクタこの場合、#to-get-biggerはこのIDを持つすべての要素を返します。 dユーザーが目的の要素のいずれかにマウスを移動すると、Jquery関数が実行されますか? BR

+0

私は個性的なもののIDと、いくつかのオブジェクトよりもグローバルなこの種のもののクラスのみを個人的に使用します。 – pbond

+0

IDが一意でない場合、どのようにIDを特定するのですか? –

+1

IDは一意であるため、名前ごとに2つの要素に同じIDを使用することはできません。 –

答えて

3

複数の要素が同じidの場合、このような問題が発生します。 id属性は一意である必要があります。 、単一の属性を持つ複数の要素を参照するclassを使用するには:

HTML

<a href="@Url.Action("StartAssessment", "StartAssessment", new { assessmentid = Model.AssessmentID })" onclick="return confirm('This will make the Assessment avilable for the regestred user.')" > 
    <img class="to-get-bigger" border="0" src="@Url.Content("~/content/images/assessment-button1.jpg")" alt="start assessment" /> 
</a> 

<a href="@Url.Action("StartAssessment", "StartAssessment", new { assessmentid = Model.AssessmentID })" onclick="return confirm('This will make the Assessment avilable for the regestred user.')"> 
    <img class="to-get-bigger" border="0" src="@Url.Content("~/content/images/assessment-button1.jpg")" alt="start assessment" /> 
</a> 

jQueryの

$(document).ready(function() { 
    $(".to-get-bigger").mouseover(function() { 
     $(this).effect("bounce", { time: 3, distance: 40 }); 
    }); 
}); 
+0

私の場合、私が達成しようとしているのは、約20項目の画像を表示するビューがあり、ユーザーがこれらの20画像の上にマウスを移動して関連画像をバウンスしたいのです。この要件。例えば、20種類のIDを提供し、jquery関数と同じものを用意する必要があります。 –

+0

私が与えた例は、 'to-get-bigger'クラスを持つすべての要素が指定されたコードを実行するということを正確に行います。それぞれに独自のクラスとイベントハンドラを与える必要はありません。 –

3

IDは一意である必要があります。 jQueryが使用するnative javascriptメソッドdocument.getElementById()は、特定のIDで見つかった最初の要素のみを返します。

jQuery by IDを使用して要素を選択すると、そのIDを持つ有効な要素が1つしかないため、要素が1つ返されます。たとえユニークなIDを使用していない場合でも、すべてのブラウザで動作するわけではありませんが、jquery cornerプラグインなどで動作することがわかっていますが、いくつかのエッジケースがあります。

1

いいえ、それはに-GET-大きな1つのIDという名前の#のコレクションを取得します、IDはページ上でuniqeでなければなりません。代わりにcssクラスを使用する必要があります。 http://www.w3.org/TR/html4/struct/global.html#h-7.5.2は、どのように動作するかについてw3c仕様を提供します。

関連する問題