使用按钮单击分别显示字符串数组的元素
Displaying elements of a string array separately with button click
我从服务器端得到一个文本,我想为每个按钮单击显示一个单词。以下是我的方法:
$(document).ready(function()
{
$.ajax(
{
type: "GET",
dataType: 'json',
url: "request.php",
success: function (response){
var words = text.match(/'b([a-z]{1,})'b/gi); //text is an element of json array
for (i = 0; i < 10; ++i)
$("#container").append("<span>"+words[i]+"</span>").hide();
}
});
});
显示单词的函数。它不工作,只是为了解释我要做什么。
$(function()
{
$("#button").click(function(){
$("#container span").fadeIn(450); // shows nothing
});
});
Jquery选择器不能选择跨度,因为他们不是在html。你能给我一个解决办法吗?
(当我写$("#container").fadeIn(450);它显示了所有的单词
你的代码有两个问题;
你使用.append()
附加span
元素到#container
,但它返回#container
jQuery对象。因此,每次添加span
元素时,都要为#container
调用.hide()
。正如你所看到的,我做了一点改动。你必须创建span
元素,隐藏它,然后把它附加到#container
,像这样;
$("<span>"+words[i]+" </span>").hide().appendTo("#container");
第二个问题是你的.click()
函数。你的选择器选择所有的span元素,有选择隐藏元素或第一个元素等的伪选择器。同时使用它们,你可以像这样选择第一个隐藏元素;
$('#container span:hidden:first');
最后在你的代码中实现这些会给我们这个结果;
$(document).ready(function() {
$.ajax({
type: "GET",
dataType: 'json',
url: "request.php",
success: function(response) {
var words = text.match(/'b([a-z]{1,})'b/gi); //text is an element of json array
for (i = 0; i < 10; ++i) {
$("<span>"+words[i]+" </span>").hide().appendTo("#container");
}
}
});
});
$(function() {
$("#button").click(function() {
$('#container span:hidden:first').fadeIn(450);
});
});
当然,如果你想一次将所有的span
元素设置为fadeIn
,你可以使用这段代码;
$("#container span").fadeIn(450);
下面是你的代码示例
给你一个选择:
$('span').hide();
var i = 1;
$("#button").click(function(){
if (i <= $("#container > span").size()){
$("#container span:nth-child("+i+")").fadeIn(450); // shows nothing
if (i < $("#container > span").size()){
i++;
}
else {
$(this).attr("disabled", true)
}
}
});
请看这里的例子- http://jsfiddle.net/xhMnt/2/
希望有帮助。亚历克斯
Alex的回答是一个非常可靠的逐一显示跨度的方法。如何从AJAX响应中创建跨度取决于PHP脚本返回的数据类型。如果响应如下所示:
[
"Some",
"words",
"via",
"JSON"
]
…这很简单:
$.ajax({
type: "GET",
dataType: 'json',
url: "request.php",
success: function(data, status) {
var container = $("#container");
var word;
for (word in data) {
$('<span />').append(word).appendTo(container);
}
}
});
另一方面,如果响应看起来像这样:" Some words as plaintext
",你必须做这样的事情:
$.ajax({
type: "GET",
dataType: 'text',
url: "request.php",
success: function(data, status) {
var container = $("#container");
var words = data.split(' ');
var word;
for (word in words) {
$('<span />').append(word).appendTo(container);
}
}
});
请注意,我将dataType
更改为text
,并添加了变量words
,其中split()
是空格字符的结果。
可以了
$("#container span:eq(" + ($("#container span.active").removeClass("active").fadeOut().index()+1) + ")").addClass("active").fadeIn();
查看这里的演示:http://jsfiddle.net/diode/y7qdV/5/
声明两个变量:
var arr = [];
var inc = 0;
ajax调用后,将单词存储到数组中:
for (i = 0; i < 10; ++i)
arr.push(words[i]);
}
:
$("#button").click(function(){
while (inc < arr.length) {
$("#container").html("<span>"+words[i]+"</span>");
inc++;
});
我还没有测试过。
- 将JSON转换为typescript中的字符串数组
- 在Javascript中将一个值和字符串数组转换为if语句
- 如何将正则表达式包含到字符串数组中
- JavaScript:将字符串数组转换为文本区域
- Knockout中的字符串数组
- 拆分字符串数组(JavaScript)后未定义
- 使用Javascript获取两个字符串之间的字符串数组
- 打印从Spring MVC Controller发送的字符串数组只显示“;toJSON”;在javascript中
- 将一个字符串数组解析为一个新的数组javascript
- AngularJS - 从字符串数组中连续更改文本
- 使用字符串数组中的字符填充 HTML 表
- 如何在 Javascript 中将字符串数组列表插入到表行中
- 创建二维字符串数组
- 如何从字符串数组中获取子字符串数组
- 如何将字符串数组转换为简单数组
- 按字母顺序、数字顺序和特殊字符对字符串数组进行排序
- 如何从字符串数组中获得8个随机唯一元素
- json_encode($myVar);正在给出地图,我想要一个字符串数组
- 函数,返回javascript中两个字符串数组的差值
- Javascript字符串数组转换为用逗号分隔的多个字符串