Javascript jQuery元素创建、值传递 $('stuff#btn')。在('click',函数(事件){ event.preventDefault(); $(this.remove(); $(“#stuff”).prepend('Level:1'); var words=[“arvuti”、“pudel”、“ekraan”]; var random=Math.floor(Math.random()*words.length); 变量字=字[随机]; var chars=单词分割(“”); 字符=\洗牌(字符); 用于(以字符表示的变量i) { $('word_place_grid ul')。追加('li id=“letter'+i+'”>“+chars[i]+'”); $('#字母'+i).bind('click',function(){ $(此)。设置动画({ 不透明度:0.30, 前-55, },750,函数(){//动画完成 $('game#window_grid ul')。追加('li>'+chars[i]+''); $(this.remove(); }); }); }
}) HTML:Javascript jQuery元素创建、值传递 $('stuff#btn')。在('click',函数(事件){ event.preventDefault(); $(this.remove(); $(“#stuff”).prepend('Level:1'); var words=[“arvuti”、“pudel”、“ekraan”]; var random=Math.floor(Math.random()*words.length); 变量字=字[随机]; var chars=单词分割(“”); 字符=\洗牌(字符); 用于(以字符表示的变量i) { $('word_place_grid ul')。追加('li id=“letter'+i+'”>“+chars[i]+'”); $('#字母'+i).bind('click',function(){ $(此)。设置动画({ 不透明度:0.30, 前-55, },750,函数(){//动画完成 $('game#window_grid ul')。追加('li>'+chars[i]+''); $(this.remove(); }); }); },javascript,jquery,html,css,Javascript,Jquery,Html,Css,}) HTML: 所以我试着从列表中随机抽取一个单词。把字母洗乱。将每个字母分别放在dic#word#place(单词位置)网格中的一个li中。然后,我想将单击处理程序添加到将为该li设置动画的每个div中,在动画结束时,我想将已设置动画的li的值添加到一个新的li元素中,该元素将附加到div#game#window(游戏窗口)网格中。 问题是,对于我现在使用的jQuery代码,它会将列表中的最后一个随机字符:chars添加到我添加到div#game#window(游戏窗口)网格中的
所以我试着从列表中随机抽取一个单词。把字母洗乱。将每个字母分别放在dic#word#place(单词位置)网格中的一个li中。然后,我想将单击处理程序添加到将为该li设置动画的每个div中,在动画结束时,我想将已设置动画的li的值添加到一个新的li元素中,该元素将附加到div#game#window(游戏窗口)网格中。
问题是,对于我现在使用的jQuery代码,它会将列表中的最后一个随机字符:chars添加到我添加到div#game#window(游戏窗口)网格中的所有li元素中。无论我以何种方式重写代码,我仍然无法为li获得正确的值
你知道我应该改变什么,或者我应该做什么来获得div#game(游戏窗口)grid li的正确值吗
提前感谢把这个拿出来
<div class="word_grid" id="game_window_grid">
<ul>
</ul>
</div>
<div class="word_grid" id="word_place_grid">
<ul>
</ul>
</div>
p.S.
.bind()
的使用不如jQuery 1.7那么广泛。on()
包含相同的功能,并且在页面加载后会发生委托事件(这就是我最初的答案如何查找动态添加的元素[id^=letter]
你能告诉我这个吗?经典的for循环问题。非常感谢。这正是我想要的。你能用几句话解释一下为什么这样做吗?我会很感激:)我想这个问题就是前面提到的for…in循环。无论出于何种原因,.bind()
回调中i
的值始终是字符
数组的最后一个索引,我建议使用$.each()
来替换此选项(请参见上面的编辑)。我提供的第一个解决方案没有使用I
,而是读取.text()
,以查找字符的值(该值不包含在for…in循环中),因此在这种情况下不成问题。
<div class="word_grid" id="game_window_grid">
<ul>
</ul>
</div>
<div class="word_grid" id="word_place_grid">
<ul>
</ul>
</div>
$('#letter'+i).bind('click',function(){
$(this).animate({
opacity: 0.30,
top: -55,
},750,function(){ //Animation complete
$('#game_window_grid ul').append('<li>' + chars[i] + '</li>');
$(this).remove();
});
});
$('#word_place_grid').on('click', '[id^=letter]', function(){
var character = $(this).text();
$(this).animate({
opacity: 0.30,
top: -55,
},750,function(){ //Animation complete
$('#game_window_grid ul').append('<li>' + character + '</li>');
$(this).remove();
});
});
$.each(chars, function(i, character) {
$('#word_place_grid ul').append('<li id="letter' + i + '">' + character + '</li>');
$('#letter'+i).on('click',function(){
$(this).animate({
opacity: 0.30,
top: -55,
},750,function(){ //Animation complete
$('#game_window_grid ul').append('<li>' + character + '</li>');
$(this).remove();
});
});
});