2016-08-04 5 views
0

Ich habe den folgenden Code, die derzeit ausgeführt wird, wenn #a-div hat focusjquery laufen, wenn div id hat eine Klasse

jQuery(document).ready(function(){ 
    jQuery('#a-div').focus(function(){ 
    if ($("#tab3").is(".tab-pane.active")) { 

     $("#another-div").hide(); 

     } 
    }); 
}); 

Aber statt id wie es zu laufen, wenn #tab3 die folgende Klasse hat .tab-pane.active

jQuery(document).ready(function(){ 
    jQuery('#tab3').is(".tab-pane.active")(function(){ 

     $("#another-div").hide(); 

    }); 
}); 

Aber ich habe nicht die richtige Syntax.

Jede Hilfe wäre sehr geschätzt, vielen Dank im Voraus!

+0

in jQuery gibt es keine jede Event-Handler, die auf Klasse Befestigung aufgerufen wird. Überprüfen Sie stattdessen die Tab-Dokumentation und finden Sie den Ereignis-Callback, der auf dem aktiven Ereignis der Registerkarte ausgeführt wird. – vijayP

+0

können Sie Ihren HTML-Code posten und wo '# another-div' im dom-Baum ist – Adjit

+0

@vijayP vielen Dank .. das klingt wie der Weg nach vorne Danke .. obwohl ich an dieser Stelle nicht sicher bin, wie man es anwendet ... aber schau weiter ... danke! – jimmywiddle

Antwort

0

Um Ihren Code arbeiten Dokument bereit:

jQuery(document).ready(function(){ 
    if(jQuery('#tab3').is(".tab-pane.active")){ 

     $("#another-div").hide(); 

    } 
}); 
+0

Das funktioniert nur, wenn wenn die Seite lädt Tab3 hat die relevante Klasse, ich brauche es zu laufen, wenn zu irgendeinem Zeitpunkt tab3 die relevante Klasse hat. – jimmywiddle

+0

@jimmywiddle, in diesem Fall müssen Sie dies aufgerufen, wenn eine Klassenänderung zu Tab3 ist. Das könnte nur von Ihnen in Ihrem Code identifiziert werden. Sie können auch versuchen, MutationObserver oder andere Arten der Auslösung der Änderung wie in http://stackoverflow.com/questions/1950038/jquery-fire-event-if-css-class-changeed –

+0

Ich hätte wirklich gedacht, dass dies mehr wäre Einfach zu erreichen als mit MutationObserver? Sie haben keine weiteren Ideen richtig? Nochmals vielen Dank für Ihre Hilfe und Zeit !!! – jimmywiddle

-1

Dieser Code-Schnipsel nur jQuery ist und keine externen Bibliotheken. Aber es dient dazu, Ihnen zu zeigen, wie man das macht.

Fügen Sie einfach einen Klick-Ereignishandler für die Klasse tab-pane hinzu und überprüfen Sie, ob das angeklickte Element die Klasse active hat.

Der andere Code in diesem Snippet ahmt nur die Switching-Klassen des Tabs nach. Jedes Mal, wenn auf eine Klasse geklickt wird, schaltet sie das div mit der Klasse output

um. Ich hoffe, dass Sie das suchen.

$(".tab-pane").click(function() { 
 
    //Ignore this code, since it's mimicking the change of tabs 
 
    changeTab($(this)); 
 
    
 
    var tab = parseInt($(this).data("tab")); 
 
    
 
    switch(tab) 
 
    { 
 
    \t case 1: 
 
    $(".output").css("border", "2px dashed red"); 
 
    break; 
 
    
 
    case 2: 
 
    $(".output").css("border", "2px dotted blue"); 
 
    break; 
 
    
 
    default: 
 
    case 3: 
 
    $(".output").css("border", "2px solid black"); 
 
    break; 
 
    } 
 
    
 
    $("#tabnr").html(tab); 
 
    
 
}); 
 

 

 

 
function changeTab(pEl) 
 
{ 
 
\t $(".tab-pane").each(function() { 
 
    \t $(this).removeClass("active"); 
 
    }); 
 
    
 
    pEl.addClass("active"); 
 
}
.tab-pane { 
 
    height: 100px; 
 
    width: 200px; 
 
    border: 2px solid black; 
 
    background-color: lightblue; 
 
    float: left; 
 
    margin-left: 15px; 
 
} 
 

 
.first { 
 
    border: 2px dashed red; 
 
} 
 

 
.second { 
 
    border: 2px dotted blue; 
 
} 
 

 
.active { 
 
    background-color: beige; 
 
} 
 

 
.clearfix { 
 
    clear: both; 
 
} 
 

 
.output { 
 
    width: 100%; 
 
    height: 50%; 
 
    background-color: lightgreen; 
 
    margin-top: 30px; 
 
    border: 2px solid black; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="tab-pane first" data-tab="1"> 
 
    Tab 1 
 
</div> 
 
<div class="tab-pane second" data-tab="2"> 
 
    Tab 2 
 
</div> 
 
<div class="tab-pane active" data-tab="3"> 
 
    Tab 3 
 
</div> 
 

 
<div class="clearfix"></div> 
 

 
<div class="output"> 
 
    This output is altered by clicking on the tabs above. You are on tab <span id="tabnr">3</span> 
 
</div>

+0

vielen Dank noch einmal .. Dies funktioniert nur, wenn wenn die Seite lädt Tab3 hat die relevante Klasse, ich brauche es zu laufen, wenn tab3 zu jeder Zeit die relevante Klasse hat. – jimmywiddle

+0

Das habe ich aus Ihrer Frage verstanden. – Jorrex

+0

Entschuldigung für das Missverständnis und nochmals vielen Dank für Ihre Hilfe, aber ja ID wie '$ (" # another-div "). Hide();' jederzeit feuern, dass '# tab3' die relevante Klasse hat .. nicht nur wenn die page loads (was momentan passiert), ich kann mir nicht vorstellen, dass das so schwierig ist, aber ich finde mich jetzt in der Möglichkeit von DomMutations nach:/ – jimmywiddle

Verwandte Themen