2013-02-22 18 views
9

Der Code mit $("#adminLink") funktioniert gut, aber die $("#itemLink") nicht. Ich habe alles versucht, was mir einfällt. Ich denke, ich brauche ein frisches Paar Augen. Alles, was ich versuche zu tun, ist die Src dieser beiden IMG zu ändern, wenn ein Element angeklickt wird.jquery Bild ändern src

Code:

$(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> 
+2

Bitte zeigen Sie auch die HTML. – JJJ

+1

Sie verwenden camel case für 'addAdmin', aber nicht 'additem' sollte 'additem' genauso groß wie I sein? – scrappedcola

+1

'HidememArr = new Array();' sollte mit 'var' im globalen Bereich deklariert werden, außerhalb' $ (document) .ready (function() {' – Oden

Antwort

20

Demo:http://jsfiddle.net/235ap/

Sie werden nicht sehen, das Bild in der Demo zu ändern, aber wenn man sich die Prüfer schauen, es ändert sich.

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() {}); 
    }); 
} 

in obiger Funktion zu ändern, wenn die Verbindung zum zweiten Mal ausgewählt wird. Anstatt nach oben zu rutschen, gleitet er nach oben und dann wieder nach unten. Unten ist die gleiche Funktion mit den Änderungen, die dafür gemacht werden, um richtig zu arbeiten.

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() {}); 
    } 
} 
1

Sie haben nicht die HTML geschrieben für mich, dies zu bestätigen, aber ich würde mit den Grundlagen beginnen - Sie Camelcase für das verwenden zweiter Gegenstand in der HidelemArr Reihe (addAdmin), aber der erste Artikel darin (additem) ist Kleinschreibung.

Überprüfen Sie Ihre HTML, um sicherzustellen, dass die Namen mit dieser Großschreibung übereinstimmen. Versuchen Sie, Ihre Großschreibung zu standardisieren, wenn Sie können.

+0

html gibt es ... noch mehr Vorschläge? –