我正在尝试创建一个div,它在用jquery点击时通过消息进行旋转。我不确定以下为什么不起作用:
$(document).ready(function() {
$("#box").html("message1");
$("#box").click(function() {
if ($("#box").html("message1"))
{
$("#box").html("message2");
}
else if ($("#box").html("message2"))
{
$("#box").html("message3");
}
else if ($("#box").html("message3"))
{
$("#box").html("message1");
}
});
});
单击div时,它会从消息1切换到消息2.但是再次单击它时,它不会再次更改。
答案 0 :(得分:1)
因为
if ($("#box").html("message1"))
不要检查html
是否为message1
而是将html
设置为message1
并返回与#box
对应的jQuery对象,以便上述代码永远是真的。这就是为什么你总是把内容改为message2
。
$(document).ready(function() {
$("#box").html("message1");
$("#box").click(function() {
var box = $(this);//Cache the object
if (box .html() == "message1")
{
box.html("message2");
}
else if (box.html() == "message2")
{
box.html("message3");
}
else if (box.html() == "message3")
{
box.html("message1");
}
});
});
您可能希望查看可能适合您的.text()
方法,而不是.html()
。
答案 1 :(得分:0)
您正在使用setter。 .html(“value”)将设置引用元素的值。所以第一个$(“#box”)。html(“message1”)总是设置消息。我建议您使用数组作为消息 - 或者如果您仍想使用当前方法,请使用
检查消息值if($("#box").html() == "message1") //and then continue from here
...
而不是使用带有值的.html。 .html()是getter,而.html(value)是setter。
编辑:我无法抗拒。当然,您可以每次设置代码以检查消息是否是某个消息 - 但您可以想象10个页面的工作量,每个消息包含10条消息。这个小插件将处理一个数组,其中包含您想要迭代的所有消息,只需很少的努力:
//plugin definition
(function($) {
$.fn.messageListRotate = function(messageList) {
var messages = messageList; //pass an array here
var max = messages.length - 1;
var pos = 1;
//initializing the element with the first message
$(this).html(messages[0]);
$(this).click(function() {
$(this).html(messages[pos]);
pos = pos == max ? 0 : pos + 1;
});
};
})(jQuery);
然后使用它:
//in your <head></head> area, after having it defined:
<script type="text/javascript">
$(document).ready(function(){
//assuming you element's id is 'messages'
$("#messages").messageListRotate(["first", "second", "third"]);
});
</script>
当然还有你的&lt; body&gt;中的元素:
<div id="messages"></div>
voilà。旋转点击。在行动here中查看。
答案 2 :(得分:0)
jQuery html()方法不测试true或false。使用html()获取值,然后根据您的值进行测试。
试试这个:
$(document).ready(function() {
$("#box").html("message1");
$("#box").click(function() {
if ($("#box").html() == "message1")
{
$("#box").html("message2");
}
else if ($("#box").html() == "message2")
{
$("#box").html("message3");
}
else if ($("#box").html() == "message3")
{
$("#box").html("message1");
}
});
});
答案 3 :(得分:0)
解决方案
$(document).ready(function() {
$("#box").html("message1");
$("#box").click(function() {
if ($("#box").html() == ("message3")) {
console.log('a');
$("#box").html("message1");
return false;
}
if ($("#box").html() == ("message2")) {
console.log('b');
$("#box").html("message3");
return false;
}
if ($("#box").html() == ("message1")) {
console.log('c');
$("#box").html("message2");
return false;
}
});
});