这是我的第一个问题,但我已经发现这个网站非常有帮助,所以感谢你们所有人。
这就是问题所在。我有一堆动态生成的div与textareas,我想迭代。这个函数适用于我输入的静态测试div,但不适用于动态创建的静态测试div。
$jQ('#upload_images_button').on('click', function() {
var caption_list = [];
$jQ('textarea.upload_image_caption').each(
function() {
caption_list.push($jQ(this).val());
document.write($jQ(this).val());
});
});
这里是每个div的html:
<div class="upload_image_temp_wrapper">
<div class="upload_wrapper">
<img src="/images/test/test.jpg" />
<div class="temp_image_hover_menu">
<input type="checkbox" checked="checked" />
</div>
</div>
<div class="upload_image_caption_wrapper">
<textarea class="upload_image_caption" type="text" placeholder="Add a description..."></textarea>
</div>
</div>
修改
天哪,我觉得自己像个白痴。
我回头看了一下生成新div的脚本,看到我忘了给textareas分类......
无论如何,感谢所有的帮助。感谢所有快速答案!
答案 0 :(得分:0)
像你正在做的那样调用.on()
不会将事件绑定为活动事件(因为缺少可选的选择器参数),这意味着它只会绑定到执行时存在的元素。如果您更改了拨打.on()
的方式,而是专门将点击绑定到body
,则可以在#upload_images_button
按钮上更改要生效的事件:
$jQ('body').on('click', '#upload_images_button', function() {} );
此外,我不确定您的网页上是否有多个#upload_images_button
按钮,但请记住ID必须是唯一的,因此如果您确实拥有多个这些元素,请使用类来代替一个身份证。
答案 1 :(得分:0)
代码工作正常。你的错误在别的地方。示例:http://jsfiddle.net/Buaja/
<强> HTML 强>
<button id="upload_images_button">Upload</button>
<button id="add-div">Add Div</button>
<div class="upload_image_temp_wrapper">
<div class="upload_wrapper">
<img src="/images/test/test.jpg" />
<div class="temp_image_hover_menu">
<input type="checkbox" checked="checked" />
</div>
</div>
<div class="upload_image_caption_wrapper">
<textarea class="upload_image_caption" type="text" placeholder="Add a description..."></textarea>
</div>
</div>
<强> JS 强>
$jQ('#upload_images_button').on('click',
function(){
var caption_list = [];
$jQ('textarea.upload_image_caption').each(
function(){
caption_list.push($jQ(this).val());
console.log($jQ(this).val());
});
}
);
// Add divs dynamically
$jQ('#add-div').on('click', function() {
$jQ(document.body).append($jQ($jQ(".upload_image_temp_wrapper")[0]).clone());
});
注意强>