クリック可能なdiv全体を持っています。これは私のコードです:
<div onclick="location.href='@Url.Action("SubClass", "Product", new { id = productClass.HierarchyId })';" class="menu-class">
<img src="~/Images/ClassImages/@imageName" alt="@productClass.HierarchyShort" />
<div class="menu-class-text">
<span>@productClass.HierarchyShort</span>
</div>
<div class="menu-class-admin-options">
<button onclick=" location.href = '@Url.Action("EditClass", "Product")'; ">Edit</button><br/>
<button onclick=" location.href = '@Url.Action("DeleteClass", "Product")'; ">Delete</button>
</div>
</div>
これは、製品とグループ名の画像を含むdivです。そして、ユーザーがそれをホバーすると、div内に2つのボタンEditとDeleteが表示されます。問題は、Div内のボタンをクリックすると、ボタンのonclickではなく、divのonclickが呼び出されることです。助けてください?すみません、私の英語。
全てに感謝。ロボオネウスと言うように。私はこれを置くだけです:
<button onclick=" location.href = '@Url.Action("NewClass", "Product")'; event.stopPropagation(); ">Edit</button><br/>
そして今は働いています。皆さんありがとう。
2つのボタンについて、新しい関数を作成し、このコードを最初に追加します。
event.cancelBubble = true;
if(event.stopPropagation) event.stopPropagation();
次に、独自のコードを追加します。
Html:
<div onclick="location.href='@Url.Action("SubClass", "Product", new { id = productClass.HierarchyId })';" class="menu-class">
<img src="~/Images/ClassImages/@imageName" alt="@productClass.HierarchyShort" />
<div class="menu-class-text">
<span>@productClass.HierarchyShort</span>
</div>
<div class="menu-class-admin-options">
<button onclick="editClass()">Edit</button><br/>
<button onclick="deleteClass()"; ">Delete</button>
</div>
</div>
JavaScript:
function editClass() {
event.cancelBubble = true;
if(event.stopPropagation) event.stopPropagation();
location.href = '@Url.Action("EditClass", "Product")';
}
function deleteClass() {
event.cancelBubble = true;
if(event.stopPropagation) event.stopPropagation();$
location.href = '@Url.Action("DeleteClass", "Product")';
}
実際には、両方のアクション(ボタンとdiv)がトリガーされます。 stopPropagation/cancelBubbleを使用して、イベントの伝播を停止する必要があります。バブリングについてさらに読む: http://javascript.info/tutorial/bubbling-and-capturing