$("#adminLink")
を含むコードは正常に機能しますが、$("#itemLink")
は機能しません。考えられるすべてを試しました。新しい目が必要だと思います。私がやろうとしているのは、要素がクリックされたときにこれら2つのimgのsrcを変更することです。
コード:
$(document).ready(function () {
HidelemArr = new Array();
HidelemArr[0] = "addItem";
HidelemArr[1] = "addAdmin";
//* hide presets
$.each(HidelemArr, function () {
$("#" + this).hide();
})
//*
$("#adminLink").click(function () {
var chld = $("#menuIMG");
var vis = (document.getElementById(HidelemArr[1]).style.display == 'block') ? 1 : 0;
changeDisplay(HidelemArr[1], vis, chld);
});
$("#itemLink").click(function () {
var chld = $("#Mitemimg");
var vis = (document.getElementById(HidelemArr[0]).style.display == 'block') ? 1 : 0;
changeDisplay(HidelemArr[0], vis, chld);
});
});
function changeDisplay(id, vis, chld) {
$.each(HidelemArr, function () {
if ((this == id) && (vis == 0)) {
chld.attr("src", "images/icon_sync.gif");
$("#" + this).slideDown('slow', function () {});
} else {
chld.attr("src", "images/icon_trace.gif");
$("#" + this).slideUp('slow', function () {});
}
})
}
html:
<ul>
<li class="header">Quick Access:</li>
<li ><span id="itemLink">
<a >Add Item</a>
<img id="Mitemimg" class="qaimg" src="images/icon_trace.gif"></span></li>
<li ><span id="adminLink">
<a >Add Administrator</a>
<img id="menuIMG" class="qaimg" src="images/icon_trace.gif"></span></li>
</ul>
</div>
<div id="main">
<h1>Actions Required:</h1>
<div id="forms">
<table class="linkForm" id="addItem">
<?php require_once 'additemform.php'; ?>
</table>
<table class="linkForm" id="addAdmin">
<?php require_once 'addAdminForm.php'; ?>
</table>
</div>
</div>
デモでは画像が変化することはありませんが、インスペクターを見ると変化しています。
HTML
<ul class="nav">
<li class="header">Quick Access:</li>
<li>
<a id="itemLink" href="#">Add Item</a>
<img id="Mitemimg" class="qaimg" src="images/icon_trace.gif">
</li>
<li>
<a id="adminLink" href="#">Add Administrator</a>
<img id="menuIMG" class="qaimg" src="images/icon_trace.gif">
</li>
</ul>
<div id="main">
<h1>Actions Required:</h1>
<div id="forms">
<table id="addItem" class="linkForm" style="display: none;">
<tr>
<td>addItemTable</td>
</tr>
</table>
<table id="addAdmin" class="linkForm" style="display: none;">
<tr>
<td>addAdminTable</td>
</tr>
</table>
</div>
</div>
JS
$(document).ready(function () {
$('#adminLink').click(function(event) {
event.preventDefault();
change('#menuIMG', '#addAdmin');
});
$('#itemLink').click(function(event) {
event.preventDefault();
change('#Mitemimg', '#addItem');
});
});
function change(imgId, divId) {
// reset img src
$('.qaimg').attr('src', 'images/icon_trace.gif');
// set img src
$(imgId).attr('src', 'images/icon_sync.gif');
// slide up all
$('#forms .linkForm').slideUp('slow', function() {
// slide down div
$(divId).slideDown('slow', function() {});
});
}
上記の機能変更では、リンクが2回目に選択されたとき。上にスライドする代わりに、上にスライドしてから下にスライドします。以下は、適切に機能するように変更を加えた同じ関数です。
function change(imgId, divId) {
//check to see if div is visable
var vis = ($(divId).css('display') == 'none')? false:true;
// slide up all
$('#forms .linkForm').slideUp('slow', function() { });
// reset img src
$('.qaimg').attr('src', 'images/icon_trace.gif');
// if div isn't visable
if(!vis){
// slide down div
$(imgId).attr('src', 'images/icon_sync.gif');
// set img src
$(divId).slideDown('slow', function() {});
}
}
これを確認するためにHTMLを投稿していませんが、基本から始めます-HidelemArr
配列の2番目の項目にキャメルケースを使用しています(addAdmin)、ただし、その最初の項目(additem)はすべて小文字です。
HTMLを調べて、名前が大文字と一致することを確認してください。可能であれば、大文字も標準化してください。