Code funktioniert nicht ohne .show () - jQuery
Frage
this.randomtip = function(){
var length = $("#showcase ul li").length;
var ran = Math.floor(Math.random()*length) + 1;
$("#showcase ul li:nth-child(" + ran + ")").show();
};
randomtip();
.. oberhalb der Code funktioniert gut mit .show()
am Ende, aber wenn ich es es wird nicht funktionieren .addClass('show')
ändern.
Ich möchte es, eine Klasse geben, anstatt float:left
Eigenschaft auf alle li
Elemente anstelle des Standard-display:list-item
anzuwenden. Wie kann ich dieses Problem beheben?
Danke!
Lösung
Nach Jordans Antwort:
Sie können die display:none
von li
ersetzen und dann die Klasse auf diese Weise hinzufügen:
$("#showcase ul li:nth-child(" + ran + ")").css('display','').addClass('show');
Andere Tipps
Wie verstecken Sie das Element in erster Linie? Wenn Sie es sind Einstellung beispielsweise auf display: none
, oder unter Verwendung von jQuery hide (), die die gleiche Sache tut, dann wird das CSS außer Kraft definiert an anderer Stelle und halten Sie Ihr Element verborgen, bis Sie ihn entfernen. Es sollte funktionieren, wenn Sie beide .show()
verwenden und display: none
(.addClass('show')
zu entfernen) (CSS Klasse hinzuzufügen).
Versuchen Sie ersetzen
$("#showcase ul li:nth-child(" + ran + ")").show();
mit diesem
$("#showcase ul li:nth-child(" + ran + ")").addClass('show').show();
statt display: none
, Verwendung .addClass('hidden')
/ .removeClass('hidden')