对于您的问题,这是一个相对简单的解决方案,尽管我已将文本包装在一个元素中以通过 CSS 轻松定位它:
<div id="email-button">
<img class="email-button-image" alt="Email" src="http://www.thescribblingape.com/wp-content/uploads/2013/06/tSA-Email-Button-post-150x150.png" width="150" height="150" />
<p>sam@thescribblingape.com</p>
</div>
以下 JavaScript 将在p
和img
可见之间切换:
function toggle(el) {
var img = el.getElementsByTagName('img'),
p = el.getElementsByTagName('p');
for (var i = 0, len = img.length; i<len; i++){
img[i].style.display = img[i].style.display === 'none' ? 'block' : 'none';
}
for (var i = 0, len = p.length; i<len; i++){
p[i].style.display = p[i].style.display === 'block' ? 'none' : 'block';
}
}
var button = document.getElementById('email-button');
button.addEventListener('click', function () {
toggle(button);
});
JS 小提琴演示。
上面可以用 jQuery 重写,给出:
$('#email-button').click(function () {
$(this).find('img, p').toggle();
});
JS 小提琴演示。
通过对 HTML 进行一些重写,您甚至可以只使用 HTML 和 CSS 来实现;HTML 被重写为:
<label for="toggle">
<input id="toggle" type="checkbox" />
<img class="email-button-image" alt="Email" src="http://www.thescribblingape.com/wp-content/uploads/2013/06/tSA-Email-Button-post-150x150.png" width="150" height="150" />
<p>sam@thescribblingape.com</p>
</label>
和CSS:
label {
display: block;
cursor: pointer;
}
label input {
display: none;
}
label input + img,
label input:checked ~ p {
display: block;
}
label input:checked + img,
label input ~ p {
display: none;
}
JS 小提琴演示。
不幸的是,尽管这确实需要一个相当最新的浏览器。