我对jQuery有这个奇怪的问题。我试图改变一个html选择,触发一个.php的帖子,为另一个select元素返回新的替换html数据。 我成功用post部分替换了select html,但是当我添加.change部分时它停止工作。
这是我的测试页面html(它是一个.php页面)
<html>
<head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
<title></title>
</head>
<body>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript" src="ajax.js"></script>
<select id=control6>
<option selected="selected" value="normal">normal</option>
<option value="change">change</option>
</select>
<select id=sortedselect6>
<option selected="selected" value="alphabetic">alphabetic</option>
<option value="grammatic">grammatic</option>
<option value="assessment">assessment</option>
<option value="maximatch">maximatch</option>
</select>
<select id=dummyselect6>
<option selected="selected" value="dummy1">dummy1</option>
<option value="dummy2">dummy2</option>
</select>
</body>
</html>
ajax.js
jQuery("select#control6").change(function() {
jQuery.post('verwerker.php', {
currentselect: jQuery("select#control6").val()
}, function(htmldata) {
jQuery("select#sortedselect6").html(htmldata);
});
});
verwerker.php
<?php
echo '<option value="alphabetic">alphabetic</option>
<option selected="selected" value="grammatic">grammatic</option>
<option value="assessment">assessment</option>
<option value="maximatch">maximatch</option>';
?>
现在,如果我只将以下内容放在ajax.js中,那么它会立即将sortedselect6更改为语法。所以它必须是.change部分的东西搞砸了?
jQuery.post('verwerker.php', {
currentselect: jQuery("select#control6").val()
}, function(htmldata) {
jQuery("select#sortedselect6").html(htmldata);
});
您可以在此处查看最后一段代码(没有.change的代码)http://www.tarile.net63.net/thebirdistheword.php
P.S。:{currentselect:jQuery(&#34;选择#control6&#34;)。val()}是为了以后,它现在没有用处
解决!问题是我的jQuery无法加载一些元素,因为页面还没有完全加载。该死的我真的很蠢,犯了这个错误,真的很蠢。 xD这里是固定代码:
jQuery(document).ready(function(){
jQuery("#sortedselect6").change(function() {
jQuery.post('verwerker.php',{selection:jQuery("select#control6").val()}, function(newSelectdata) {
jQuery("select#sortedselect6").html(newSelectdata);
});
});
});
答案 0 :(得分:1)
您的基本更改和ajax代码在此jsfiddle中正常工作。请注意,数据略有不同仅仅因为小提琴需要您发送实际的html才能测试ajax
确保将代码包装在ready事件中,以便在代码触发时元素存在
$(function(){
/* your code here*/
})