我这里有一个小脚本。当您按下按钮时,文本会隐藏。如果我想在文本消失时将文本更改为"unhide"
,我该怎么办呢?
我的意思是按钮上的文字变为"unhide"
。
<div>
<p>Should I hide this message?</p>
<button>Click for hide</button>
</div>
<script>
$(document).ready(function(){
$('button').click(function() {
$('p').slideToggle();
});
});
</script>
答案 0 :(得分:5)
使用条件与三元运算符? :
来更改文本,如果文本为Click for hide
,我们会将其更改为Click for unhide
,否则我们会将其更改为Click for hide
<强> Live Demo 强>
$(document).ready(function(){
$('button').click(function() {
$(this).text($(this).text() == "Click for hide" ? "Click for unhide" : "Click for hide");
$('p').slideToggle();
});
});
编辑,因为@Alex指出如果文本更新并且可能有拼写错误,此解决方案不是很友好。您可以使用p
的可见性来更改文本。使用$('p').slideToggle();
也会影响页面上的所有p
。您应该在p
之前将其与button
相关联。
<强> Live Demo 强>
$('button').click(function () {
$(this).text($(this).prev().is(":visible") ? "Click for unhide" : "Click for hide");
$(this).prev().slideToggle();
});
答案 1 :(得分:2)
您可以查看:visible
:
$(document).ready(function () {
$('button').click(function () {
var $self = $(this);
$(this).closest('div').find('p').slideToggle(function () {
$self.text($(this).is(':visible') ? "Click for hide" : "unhide");
});
});
});
答案 2 :(得分:0)
像这样:
$(document).ready(function(){
$('button').click(function() {
$('p').slideToggle(function() {
$('button').text('new text');
});
});
});
答案 3 :(得分:0)
试试这个:
<div>
<p style="display:block">Should I hide this message?</p>
<button>Click for hide</button>
</div>
$( "button" ).click(function() {
$( "p" ).toggle(function(){
$("button").text($(this).is(':visible') ? "Click for hide" : "unhide");
});
});
更新了代码和jsfiddle。
答案 4 :(得分:0)
你应该:
id
<p>
id
<button>
<p>
的可见性来更改文字您的代码将成为
<div>
<p id="theMessage">Should I hide this message?</p>
<button id="theButton">Click for hide</button>
</div>
<script>
$(document).ready(function(){
// $('button') would attach it to ALL buttons on page
// this would attach it only to the correct one
$('#theButton').click(function() {
var _this = this;
var pTag = $('#theMessage');
pTag.slideToggle(function(){
// avoiding else block through initialization
var buttonText = "Click to unhide";
if(pTag.is(':visible')) {
buttonText = "Click to hide";
}
// note this is '_this' from the .click handler
_this.text(buttonText);
});
});
});
</script>
注意三元运算符?:
,两个方面都会被评估,因此您可能会在代码中遇到模糊的副作用。 if/else
让您免于此问题。
答案 5 :(得分:-2)
解决问题的最佳代码是:
$(document).ready(function(){
$('button').click(function() {
$('p').slideToggle(function() {
$(this).text('new text');
});
});
});
非常感谢大家的答案: - )