我通过js创建按钮,并在用户打开它时将其添加到html中,从而向我的订单添加了产品,并添加了删除相同产品的按钮,而正是在该按钮中,我才遇到问题。该按钮具有 deletePrato 类,但是在创建按钮之前读取.click()时,它并没有做出我想要的反应
$('#orderDiv').click(function() {
$('#escondido').hide();
$('#ordersDiv').show();
for (var i = 0; i < order.length; i++) {
if (order[i] == food[contador]['id']) {
orderVerificacao = true;
quantityTemp = $('#quantity'+order[i]).val();
$('#quantity'+order[i]).val(++quantityTemp);
}
}
if (!orderVerificacao) {
order[contadorOrder] = food[contador]['id'];
// This is here I add a new button
$('#ordersDiv').append('<p class="deletePrato" value="'+food[contador]['id']+'">X</p>');
console.log(order);
contadorOrder++;
// Here I call the function to read .click()
deletar();
}
orderVerificacao = false;
});
但是当我在.click()之后添加按钮时,我创建了一个函数,以便每当创建一个新按钮时,它都会再次读取.click(),我以为它可以那样工作,但该按钮仍然不起作用反应并且不阅读.click()。
// The function to read .click()
function deletar() {
$('.deletePrato').click(function() {
pratoDelete = $(this).val();
for (var i = 0; i < order.length; i++) {
if(order[i] == pratoDelete){
var index = order.indexOf(i);
if (index > -1) {
order.splice(index, 1);
}
$('#quantity'+pratoDelete).remove();
$('#escondido').show();
$('#ordersDiv').hide();
}
}
});
}
我试图将
(编辑) 这是我的HTML,是WebAR应用程序
<html lang="en">
<head>
<link rel="apple-touch-icon" href="./imagens/dimmersions_logo.png">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
<title>AR Food</title>
<script src="https://hammerjs.github.io/dist/hammer.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://aframe.io/releases/0.9.2/aframe.min.js"></script>
<script src="https://raw.githack.com/jeromeetienne/AR.js/2.0.5/aframe/build/aframe-ar.js"></script>
<script src="scripts/localforage.js" charset="utf-8"></script>
<script src="scripts/lodash.js" charset="utf-8"></script>
<script type="text/javascript">var resultado =<?php echo json_encode($resultado); ?>;</script>
<script src="scripts/scriptIndex.js" charset="utf-8"></script>
<link rel="stylesheet" type="text/css" href="./style.css">
</head>
<body id="body">
<div id="mesaDiv">
<p class="order">Table Number</p>
<select class="formMesa" id="mesaId">
<?php
for ($i=1; $i <= $numMax; $i++) {
echo "<option value='".$i."'>".$i."</option>";
}
?>
</select>
<button type="button" class="myButton" id="start">Start</button>
</div>
<div class="deletePrato"></div>
<div id="ordersDiv">
<p class="close" id="closeOrders">X</p>
</div>
<div id="escondido" hidden="true">
<div id="swiper"></div>
<div id="orderDiv">
<p class="order">Order</p>
</div>
<div id="tituloDiv">
<p id="nameFood"></p>
</div>
<img id="loadingGif" alt="loadingGif" src="./imagens/load.gif">
<div id="swipeDiv">
<img id="swipeImg" alt="swipeImg" src="./imagens/swipe.png">
<p id="swipe">Swipe for next dish</p>
</div>
<div id="ingredientesBar">
<p id="seta">↑</p>
<p id="ingredientesSwipe">Ingredients</p>
</div>
<div id="ingredientsDiv" hidden="true">
<p class="close" id="closeIngredientes">X</p>
<ul style="padding: 1em 3em" id="ulIngredientes">
</ul>
</div>
</div>
<div id="markerInicial">
<img id="markerOpacidade" alt="markerOpacidade" src="./imagens/pattern-restaurant-menu.png">
<p id="markerTitulo">Please point to the marker</p>
</div>
<a-scene arjs='trackingMethod: best; sourceWidth:1280; sourceHeight:960; debugUIEnabled:false' embedded vr-mode-ui="enabled: false">
<a-assets id="assets">
</a-assets>
<a-marker detect-marker id="marker" preset='custom' type='pattern' url='./markers/pattern-restaurant-menu.patt' smooth="true">
</a-marker>
<a-entity camera></a-entity>
</a-scene>
</body>
</html>
答案 0 :(得分:1)
您需要使用okhttp3.VERSION
,以便您的event Delegation
监听DOM
的点击事件。通过使用dynamically appended element
同样要获取.on
的值,您还需要使用p
来获取被点击项目的值。
我也在每行中添加了一些注释。在下面将点击功能更改为此,它应该可以正常工作。
仅供参考-您也不需要功能attr
。是否拥有它取决于您。点击时deletar
会调用Event delegation
,并将删除您想要的项目。
运行下面的代码段。
.deletePrato
//The function to read .click()
function deletar() {
//Change your to click to this below.
$(document).on('click', '.deletePrato', function() {
//Get the p value like this
var pratoDelete = $(this).attr('value');
console.log(pratoDelete)
});
}
deletar()