Ich bin in ein Problem mit einigen Knockout-Code aus einer CSS3-Animation feuern. Es funktioniert mit einem Codeblock und nicht mit einem anderen. Die Idee besteht darin, eine Animation anzuzeigen, wenn Sie einen Artikel zum Warenkorb hinzufügen. Das Objekt im Code, das nicht funktioniert, wird leer angezeigt, während das funktionierende Objekt die Produktbenachrichtigung 'div. Das andere Problem ist das $ ('# cart-nav a.first'). Click(); wird nicht gesendet, wenn diese Aktion ausgeführt wird. Dies funktioniert in keinem der beiden Szenarien.CSS-Animation nicht mit Knockout-Code auf Knopfdruck feuern - und nicht Click-Ereignis zu versenden
Unten ist, wo der Code funktioniert (für die Animation), und ein anderer, wo es nicht funktioniert. Schätze jede Hilfe. Danke
Arbeitscode, bei dem CSS3-Animation ausgelöst wird, wenn Sie einen Artikel zum Einkaufswagen hinzufügen. Die Klasse 'Rise' löst die Animation aus. Ein funktionierender Block Code, der andere funktioniert nicht, und der JS darunter. Danke
Works
<div class="thumbnail product-image medium">
<div class="actions">
<div class="product-notification-cont">
<div class="product-notification"> Added to cart!</div>
</div>
<a href="#" class="button product-add-to-cart" data-bind="click:$root.addProductToCart.bind($data)">Add to Cart</a>
<a href="#" class="button purple product-more-info" data-bind="click:$root.productShowMoreInfo.bind($data)">More Info</a>
</div>
<a href="" data-bind="attr:{href:'/#products/'+$data.id}">
<img src="" data-bind="attr:{alt:$data.name, src:$root.servicePath+'products/'+$data.id+'/images/preview_image/medium?auth='+ax.JRR}" />
</a>
</div>
nicht (für Debugging-Zwecke console.log da drin)
<div class="product-info" data-bind="visible:!(productLoading())">
<h2 data-bind="text:product().name"></h2>
<div class="product-description" data-bind="html:product().description">
</div>
<div class="product-notification-cont">
<div class="product-notification"> Added to cart! </div>
</div>
<button class="button" data-bind="click:addProductToCart.bind($data,productMoreInfo())">Add to Cart</button>
<? } else { ?>
<h3><?=l(23)?></h3>
<? } ?>
</div>
JS Funktioniert
self.addProductToCart = function(data, event) {
var $productNotification = $(event.target).prev().children('.product-notification');
console.log($productNotification);
ax.Cart.addCartItem({product_id:data.id, name:data.name, description:data.description});
$('#cart-nav a.first').click();
$productNotification.addClass('rise');
$productNotification.on('animationend',function() {
$(this).removeClass('rise');
});
};
Können Sie uns ein Beispiel Ihrer Frage zu Jsfiddle geben? –
Warum verwenden Sie keine Knockout-'css'-Bindung, um dem DOM-Element eine Klasse hinzuzufügen, da Sie Knockout verwenden? –
Hallo Matt - danke. Ich würde aber hinter den Kulissen noch viel anderes passieren, ich kann versuchen, es so anzupassen, dass es passt. Was die Verwendung der CSS-Bindung betrifft, könnte das funktionieren, aber in diesem Szenario müsste ich jede Taste binden, etwas, das ich vermeiden wollte. Ich sehe aber, dass es der beste Weg b/c ist, dass ich irgendwie KO benutze. – erics15