2016-11-09 6 views
1

komplette Noob Frage hier:Wie man divs ändert, die von jQuery erzeugt werden?

Ich habe dieses 16x16 Raster von von jQuery

var rows = 16; 
 
var columns = 16; 
 
var $row = $("<div />", { 
 
    class: 'row' 
 
}); 
 
var $square = $("<div />", { 
 
    class: 'square' 
 
}); 
 

 
$(document).ready(function() { 
 
    for (var i = 0; i < columns; i++) { 
 
    $row.append($square.clone()); 
 
    } 
 

 
    for (var x = 0; x < rows; x++) { 
 
    $(".box_main").append($row.clone()); 
 
    } 
 
});
.row { 
 
    width: auto; 
 
    height: 40px; 
 
    background: #313131; 
 
} 
 
.square { 
 
    width: 40px; 
 
    height: 40px; 
 
    border-radius: 10px; 
 
    margin: 0; 
 
    display: inline-block; 
 
    background: #fff; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Kann ich irgendwie die addClass und removeClass (oder etwas anderes) verwenden, um erzeugt divs ändere die Hintergrundfarbe jedes Divs einzeln, wenn du mit dem Mauszeiger über sie gehst?

Ich habe versucht, etwas auszuarbeiten, aber ich bin mir nicht einmal sicher, ob es möglich ist oder nicht.

+1

Ja können Sie CSS-Klassen verwenden, das Styling Ihrer 'div's zu ändern. Vielleicht möchten Sie es zuerst selbst ausprobieren, bevor Sie fragen. ;) – evolutionxbox

+2

Das ist einfach mit jQuery, aber einfacher mit CSS. Mache einen neuen Stil mit dem Selektor '' '.square: hover''' und setze dort die Hintergrundfarbe. –

+0

Ich habe versucht, aber ich bin nicht einmal sicher, welches Element zu wählen? Jedes Mal, wenn ich etwas gemacht habe, ist das Gitter einfach verschwunden. – mbt86

Antwort

4

addClass()/removeClass() (oder sogar JS) wird dafür nicht benötigt - Sie können es mit dem :hover pseduo Selektor von CSS allein erreichen. Versuchen Sie folgendes:

.square:hover { 
    background: #C00; /* amend colour as needed */ 
} 

Arbeitsbeispiel:

var rows = 16; 
 
var columns = 16; 
 
var $row = $("<div />", { 
 
    class: 'row' 
 
}).appendTo('body'); 
 
var $square = $("<div />", { 
 
    class: 'square' 
 
}); 
 

 
$(document).ready(function() { 
 
    for (var i = 0; i < columns; i++) { 
 
    $row.append($square.clone()); 
 
    } 
 

 
    for (var x = 0; x < rows; x++) { 
 
    $(".box_main").append($row.clone()); 
 
    } 
 
});
body { 
 
    background: #313131; 
 
} 
 
.row { 
 
    width: auto; 
 
    height: 40px; 
 
    background: #313131; 
 
} 
 
.square { 
 
    width: 40px; 
 
    height: 40px; 
 
    border-radius: 10px; 
 
    margin: 0; 
 
    display: inline-block; 
 
    background: #fff; 
 
} 
 
.square:hover { 
 
    background: #C00; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

Thansk für das bin ich mir nicht sicher, ob: Hover kann verwendet werden, wenn ich verschiedene Farben zum Beispiel für verschiedene Tasten wollte? – mbt86

+0

Es kann gemacht werden, um zu arbeiten, aber ich würde mehr Details über die Logik benötigen, die regelt, welche Farben auf welchen Elementen verwendet werden sollten. Ich würde vorschlagen, dass Sie mit diesen Details eine neue Frage beginnen. –

1

neben dem :hover pseduo Selektor, müssen Sie möglicherweise eine tatsächliche Klasse, um es mit JS hinzufügen (vielleicht wäre es machen mehr Sinn, wenn durch ein anderes Ereignis ausgelöst wird), hier ist jedoch ein Beispiel mit JS (addClass/removeClass)

var rows = 16; 
 
var columns = 16; 
 
var $row = $("<div />", { 
 
    class: 'row' 
 
}); 
 
var $square = $("<div />", { 
 
    class: 'square' 
 
}); 
 
$row.appendTo('body'); 
 

 
$(document).ready(function() { 
 
    for (var i = 0; i < columns; i++) { 
 
    $row.append($square.clone()); 
 
    } 
 

 
    for (var x = 0; x < rows; x++) { 
 
    $(".box_main").append($row.clone()); 
 
    } 
 

 
    $('.square').hover(function() { $(this).addClass('hovering'); }, function() { $(this).removeClass('hovering'); }); 
 
});
.row { 
 
    width: auto; 
 
    height: 40px; 
 
    background-color: #313131; 
 
} 
 
.square { 
 
    width: 40px; 
 
    height: 40px; 
 
    border-radius: 10px; 
 
    margin: 0; 
 
    display: inline-block; 
 
    background-color: #fff; 
 
} 
 
.hovering { 
 
    background-color: cyan; 
 
    border: 3px dashed blue; 
 
    width: 34px; 
 
    height: 34px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

Das Schweben funktioniert aber was, wenn ich will, dass es so etwas wie eine "Zeichnung" funktioniert? Ich denke, ich habe die falsche Frage gestellt * facepalm – mbt86

Verwandte Themen