2016-09-23 1 views
2

Ich versuche, Folgendes zu erstellen.Holen Sie sich das nächste Element mit der gleichen Klasse in jquery bei Klick

Ich habe eine Schaltfläche und beim Klicken auf diese Schaltfläche muss ich eine aktive Klasse zu einem Div hinzufügen, aber ich habe 4 Divs mit derselben Klasse. Was ich versuche zu erstellen, ist wie bei einem Choose Bet System. Wenn du zum ersten Mal auf den Button klickst, wählst du die erste Wette, beim zweiten Mal die zweite, ich habe 4 Wetten.

Meine HTML-Struktur ist die unter

<div class="game_paytable_bluebet_column game_paytable_column"></div> 
<div class="three_bet_wrappaer"> 
    <div class="game_paytable_greenbet_column game_paytable_column"></div> 
    <div class="game_paytable_orangebet_column game_paytable_column"></div> 
    <div class="game_paytable_redbet_column game_paytable_column"></div> 
</div> 

Was ich bisher mit jquery unter

jQuery('.choose_bet_button').click(function(){ 
    if(!jQuery('.game_paytable_column:first').hasClass('active_blue_bet')){ 
     jQuery('.game_paytable_column:first').addClass('active_blue_bet'); 
    }else{ 
     jQuery('.game_paytable_column:first').removeClass('active_blue_bet'); 
     jQuery('.game_paytable_column').next().addClass('active_blue_bet'); 
    } 
}); 

Mit diesem Code sehen tat es zwei Elemente zu bekommen.

Irgendeine Idee, wie man eine Lösung zu diesem bekommt?

Vielen Dank im Voraus.

+0

Does not 'n-Kind()', 'eq()' oder 'n-of-Typ()' funktioniert? – xameeramir

+0

aber wie kann ich den Klick wie folgt verfolgen, ist es der erste Klick oder ein zweiter Klick und eine Aktion mit eq(), nth-child() usw.? –

+0

Ich würde vorschlagen, dass Sie speichern, dass in einer 'localStorage' oder' sessionStogare' Variable – xameeramir

Antwort

1

:eq() Verwenden Sie erreichen können Ihre Anforderung. Und einen Zähler initialisieren und basierend auf dem Zähler Klasse in Div hinzufügen. Und alle vier Klicks machen Sie den Zähler 0.

Bitte überprüfen Sie dieses Snippet.

var _click = 0; 
 
$('.choose_bet_button').click(function(){ 
 
    if((_click % $(".game_paytable_column").length)==0){_click=0;} 
 

 
    $('.game_paytable_column').removeClass('active_blue_bet'); 
 
    $('.game_paytable_column:eq('+_click+')').addClass('active_blue_bet'); 
 
    
 
    _click++; 
 
    if($.trim($(".in_sight_area").html())==""){ 
 
    $(".in_sight_area").html('<div class="top_bet_column_two top_bet_column game_paytable_column">New One</div>'); 
 
    } 
 
});
.active_blue_bet{ 
 
    color:blue; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="in_sight_area"></div> 
 

 
<div class="game_paytable_bluebet_column game_paytable_column">1</div> 
 
<div class="three_bet_wrappaer"> 
 
    <div class="game_paytable_greenbet_column game_paytable_column">2</div> 
 
    <div class="game_paytable_orangebet_column game_paytable_column">3</div> 
 
    <div class="game_paytable_redbet_column game_paytable_column">4</div> 
 
</div> 
 
<br/> 
 
<button class="choose_bet_button">Choose Bet</button> 
 

 
<div class="game_paytable_redbet_column game_paytable_column">5</div>

+0

Ja, ich sehe, funktioniert perfekt @Rahul Patel. Funktioniert dieser Snippet, wenn ich einen weiteren Block damit verbunden habe, wie wenn das Blau ausgewählt ist, sollte auch ein anderer Teil einen aktiven Zustand bekommen. –

+0

Ja, lass mich eine Korrektur machen und es wird gut mit dynamischen Divs funktionieren. –

+0

@AnahitDEV Überprüfen Sie das Snippet jetzt. Sie können beliebig viele Divs hinzufügen. Und rückgängig machen, wenn das das einzige Problem war. –

1

Wenn Sie auf eine Schaltfläche haben ... also:

<button onclick="next()" >NEXT</button> 

Scheint ganz einfach:

// get all elements with class game_paytable_column 
var columns = document.getElementsByClassName("game_paytable_column"); 

// counter to control the actual index 
var counter = 0; 

function next() { 
    // this selects the actual element and shows content 
    alert(columns[counter].innerHTML); 

    //and passes to next element 
    if (counter == columns.length - 1) 
     counter = 0; 
    // first if necessary 
    else 
     counter ++; 
} 

WORKING DEMO

Das ist alles :)

+0

Ja großartig, danke für das Arbeitsbeispiel –

2

hier eine Interpretation ist, bitte die Kommentare zu einem Zusammenbruch sehen.

jQuery('.choose_bet_button').click(function(){ 
 
    // get all the elements that match your selector 
 
    var $columns = $('.game_paytable_column') 
 
    // get the currently active element 
 
    var $active = $columns.filter('.active_blue_bet') 
 
    // get the index of the active element relative to your columns 
 
    var index = $active.length ? $columns.index($active) : -1 
 
    // increment the index if there is a next element or reset to 0 
 
    var newIndex = ($columns.length > index + 1) 
 
    ? index + 1 
 
    : 0 
 
    
 
    // remove the active class from all elements 
 
    $columns.removeClass('active_blue_bet') 
 
    // set the new active column 
 
    $columns.eq(newIndex).addClass('active_blue_bet') 
 
});
.game_paytable_column { 
 
    width: 100%; 
 
    height: 40px; 
 
    margin: 4px; 
 
    background: #eee; 
 
} 
 

 
.active_blue_bet { 
 
    background: #bada55; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="game_paytable_bluebet_column game_paytable_column active_blue_bet"></div> 
 
<div class="three_bet_wrappaer"> 
 
    <div class="game_paytable_greenbet_column game_paytable_column"></div> 
 
    <div class="game_paytable_orangebet_column game_paytable_column"></div> 
 
    <div class="game_paytable_redbet_column game_paytable_column"></div> 
 
</div> 
 
<button class="choose_bet_button">choose</button>

+0

Danke @ Synthet1c. Ihr Snippet war auch hilfreich –

Verwandte Themen