簡體   English   中英

如何在點擊的確切卡片上彈出消息?

[英]How to pop-up message on the exact card where it's clicked?

我試圖在卡片列表中顯示一些元素,當我單擊卡片時,我需要在該卡片上顯示彈出消息。 現在它顯示在最上面的卡片。 但我需要它顯示在我點擊的卡片上。

這是我用於顯示卡片元素和彈出窗口的 html 代碼:


<a class="external" ng-repeat="card in cardData" ng-click="popUpFunction()">                             
  <div class="card">
      <img class="card-image" src="{{card.thumbNail_image}}" alt="">
      <div class="popup">
          <span class="popuptext" id="myPopup">A Simple Popup!</span>
      </div>
      <div class="card-infos">                              
          <h2 class="card-title">{{card.contentDescription}}</h2>
      </div>
   </div>
</a>

這是css代碼:

.popup {
  position: relative;
  display: inline-block;
  cursor: pointer;
  height:0px;
  width:0px;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

/* The actual popup */
.popup .popuptext {
  visibility: hidden;
  width: 160px;
  background-color: #555;
  color: #fff;
  text-align: center;
  border-radius: 6px;
  padding: 8px 0;
  position: absolute;
  z-index: 1;

  margin-left: 80px;
}

/* Popup arrow */
.popup .popuptext::after {
  content: "";
  position: absolute;
  top: 100%;
  left: 50%;
  margin-left: -5px;
  border-width: 5px;
  border-style: solid;
  border-color: #555 transparent transparent transparent;
}

/* Toggle this class - hide and show the popup */
.popup .show {
  visibility: visible;
  -webkit-animation: fadeIn 1s;
  animation: fadeIn 1s;
}

/* Add animation (fade in the popup) */
@-webkit-keyframes fadeIn {
  from {opacity: 0;} 
  to {opacity: 1;}
}

@keyframes fadeIn {
  from {opacity: 0;}
  to {opacity:1 ;}
}

這是js代碼:

$scope.popUpFunction = function () {
   var popup = document.getElementById("myPopup");
   popup.classList.toggle("show");
}

您可以點擊元素將事件傳遞給函數。 在事件對象中,您可以提取單擊元素的目標屬性。 這是一個快速演示來說明。

此外,您似乎點擊了一個循環,我不知道 angularJS,但我認為它會是這樣的:

<div class="card" ng-click="popUpFunction($event)">       // notice the $event

代替

<a class="external" ng-repeat="card in cardData" ng-click="popUpFunction()">                             

 function onClickShowMessage(event) { const card = event.target; const message = createMessageElement(); card.appendChild(message); } function createMessageElement() { const message = document.createElement('p'); message.innerHTML = 'This is some message'; message.classList.add('message'); return message; }
 .card { width: 200px; min-height: 150px; background-color: yellow; cursor: pointer; margin-bottom: 5px; display: block; } .message { background-color: firebrick; color: white; padding: 1rem; }
 <a class="card" onclick="onClickShowMessage(event)"></a> <a class="card" onclick="onClickShowMessage(event)"></a> <a class="card" onclick="onClickShowMessage(event)"></a>

為了解決這個問題,我將卡片的索引作為參數傳遞並在ng-if檢查它

<a class="external" ng-repeat="card in cardData" ng-click="popUpFunction()">                             
  <div class="card">
      <img class="card-image" src="{{card.thumbNail_image}}" alt="">
      <div class="popup">
          <span class="popuptext" id="myPopup" ng-if="popUpIndex==$index">A Simple Popup!</span>
      </div>
      <div class="card-infos">                              
          <h2 class="card-title">{{card.contentDescription}}</h2>
      </div>
   </div>
</a>

這是腳本文件的變化:


$scope.popUpIndex = 0;
$scope.modalFunction = function (ind) {
    console.log(ind);
    $scope.popUpIndex = ind;
    var popup = document.getElementById("myPopup");
    popup.classList.toggle("show");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM