jQuery中出现.change的错误

时间:2012-03-31 13:09:22

标签: javascript jquery debugging

我对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);
        });
    });
});

1 个答案:

答案 0 :(得分:1)

您的基本更改和ajax代码在此jsfiddle中正常工作。请注意,数据略有不同仅仅因为小提琴需要您发送实际的html才能测试ajax

http://jsfiddle.net/up6fG/

确保将代码包装在ready事件中,以便在代码触发时元素存在

    $(function(){
     /* your code here*/

    })