当 DOM 准备好时,我无法运行一些 jQuery。
我有两个表单,每个表单都有 <select>
当我的代码运行时应该加载到其他表单元素中。
当用户第一次加载页面时,我希望在ready()
上进行这些选择获取某些属性(表单操作、load()
目标等),然后将其加载。使用 change()
时效果非常好我可以得到一个 <select>
工作时但不能同时工作。
HTML
<form action="php/bagCreate/newBag_bag.php" method="post" id="form1">
<select id="target" data-target="upForm" class="get" name="bagLevel">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
</form>
<form action="php/bagCreate/storeItems_bag.php" method="post" id="form2">
<select id="target2" data-target="upFormType" class="get" name="itemName">
<option>A</option>
<option>B</option>
<option>C</option>
</select>
</form>
JS
这适用于单个表单,但第二个表单无法加载
$(document).ready(function(){
$('select.get').ready(function() {
var action = $('select.get').parent().attr('action');
var target = $('select.get').data('target');
$('#'+target).load(action, $('select.get').parent().serializeArray());
});
改变select.get
至this
Ready 函数内部不会导致任何表单加载。
使用change()
尽管有点重复,但两种形式都可以完美地工作
$('select.get').change(function() {
var action = $(this).parent().attr('action');
var target = $(this).data('target');
$('#'+target).load(action, $(this).parent().serializeArray());
});
最佳答案
只需在页面加载时触发更改事件?
$('select.get').change(function() {
var action = $(this).parent().attr('action');
var target = $(this).data('target');
$('#'+target).load(action, $(this).parent().serializeArray());
}).change(); //trigger it on pageload as well ...
关于jQuery Ready() 问题 - $(this) 不可用且代码仅适用于一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14820663/