我有多个元素,每个元素都是一个tile,每个元素都有文本,当用户点击每个tile时,它会更改文本。我有一个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;
}
答案 0 :(得分:2)
我想建议一个简单的解决方案。 使用数据属性。
瓦片:
<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()