2017-04-21 4 views
0

ich folgende HTML-Code haben: productsHolen Eltern von übergeordneten Knoten in JS

, wenn ich auf die Schaltfläche Löschen klicken Sie auf die < li> Attribut von diesem Produkt löschen müssen.

Es hatte mit JS gearbeitet, aber jetzt ist es nicht möglich. Der Hörer:

cartList.on('click', '.delete-item', function(event){ 
    event.preventDefault(); 
    removeProduct($(event.target).parents('.product')); 
}); 

Dies ist die removeproduct Funktion bis wo es stürzt ab:

function removeProduct(product) { 
    clearInterval(undoTimeoutId); 
    cartList.find('.deleted').remove(); 
    var topPosition = product.offset().top - cartBody.children('ul').offset().top, 
    productQuantity = Number(product.find('.quantity').find('input').val()), 
    productTotPrice = Number(product.find('.price').text().replace('€', '')); 
} 

ich den Fehler:

main.js:168 Uncaught TypeError: Cannot read property 'top' of undefined

So wahrscheinlich kann er nicht den Knoten Produkt erhalten aber liest nur "Aktionen" - der erste Knoten als Elternteil. Aber wie kann ich acces das Attribut Produkt li die ganze Reihe

+0

'cartBody.children ('ul') versetzt()' ist 'undefined'. Was ist 'cartBody'? Hat es irgendwelche "ul" Elemente? –

+2

Wenn Sie HTML in einer Frage zeigen möchten, fügen Sie es bitte als Text ein, nicht als Bild, damit die Leute es (wo relevant) leicht in ihre Antworten kopieren können. – nnnnnn

+0

der HTML-Code ist mit Javascript codiert – belgiums

Antwort

0

Versuchen Sie es mit dem folgenden Code-Schnipsel zu löschen.

cartList.on('click', '.delete-item', function(event){ 
$(this).parents('.product').remove(); //this will remove the parent .product from the DOM 
}); 
+0

entfernt es tatsächlich. Weißt du wie ich die "productQuantity" daraus bekomme, die jetzt nicht funktioniert .. – belgiums

+0

productQuantity = Number (product.find ('. Quantity'). Find ('input'). Val()), gibt es kein Eingabe-Tag innerhalb der div "Menge". –

Verwandte Themen