单击另一个元素时恢复上一个值

Restore Previous value when another element is clicked

本文关键字:上一个 恢复 另一个 元素 单击      更新时间:2023-09-26

我有多个元素,每个元素都是一个磁贴,每个元素中都有文本,当用户单击每个磁贴时,它会更改文本。我有一个JavaScript函数来处理这个问题,它很有效,但我想让它一次只能有一个tile更改文本。单击下一个元素时,上一个元素应返回到默认文本。下面是我的代码。P标记中的文本是默认文本。

 <div class="page" title="Page 2" onClick="changeText('Some text blah blah blah.','home-grid-one-one')">
    <p>Understandable</p>
  <div class="page" title="Page 2" onClick="changeText('Some different text blah blah blah.','home-grid-one-two')">
    <p>Measurable</p>
function changeText(text, ele) {
    var display = document.getElementById(ele);
    display.style.textAlign = "center";
    display.style.fontSize = "1em";
    display.innerHTML = text;
}

我想提出一个简单的解决方案数据属性的使用

瓷砖:

<p class='tile' data-default="The default text 1 here" data-clicked="Text to be replaced">The default text 1 here</p>
<p class='tile' data-default="The default text 2 here" data-clicked="Text to be replaced">The default text 2 here</p>
<p class='tile' data-default="The default text 3 here" data-clicked="Text to be replaced">The default text 3 here</p>

jQuery:

$('.tile').click(function(e) { // when the tile is clicked
    $('.tile').not(this).text($(this).attr('data-default')); // Except the clicked tile all are restored to default data
    $(this).text($(this).attr('data-clicked')); // The clicked tile gets the replacer text
});

如果替换文本中包含HTML,请使用.html()而不是.text()