JQuery Listener不听

时间:2012-01-28 17:41:26

标签: jquery listener

我正在尝试单击输入类型复选框..单击时会执行AJAX调用。我有一个听众设置但没有任何事情发生......萤火虫也没有显示任何内容。

代码:

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js{API removed}"></script>
    <script type="text/javascript">
    $(document).ready(function() {
alert('test');
if ($('#profile_visible:checked').val() !== null) {

        $.ajax({
          url: 'inc/profileVisible.php',
          success: function(data) {
            $('#resultProfileVisible').innerhtml="success";
            alert('Load was performed.');
          }
        });
}
    }
    </script>

......并在文件正文中:

    <form method="post" action="profile/<?php echo $_SESSION['usern']; ?>/settings">
    <p><input type="checkbox" id="profile_visible" name="profile_visible" /> Show Profile<span id="resultProfileVisible"></span></p>
    </form>     

感谢

4 个答案:

答案 0 :(得分:1)

您没有设置事件侦听器。使用on(jQuery&gt; 1.7)或bind(jQuery&lt; 1.7)或jQuery的各种快捷方法(如.change.click)绑定事件处理程序:

$(document).ready(function() {
    $("#profile_visible").change(function() {
        if (this.checked) {
            $.ajax({
                url: 'inc/profileVisible.php',
                success: function(data) {
                    $('#resultProfileVisible').html("success");
                    alert('Load was performed.');
                }
            });
        }
    });
});

另外,在使用jQuery对象时,使用.html()代替.innerHtml来设置元素的html内容。

示例: http://jsfiddle.net/andrewwhitaker/8x6h8/1/

答案 1 :(得分:1)

唯一的侦听器是DOM就绪,因此它只会运行一次。

您的代码存在一些问题。见下文。

$(document).ready(function () {
    alert('test');
           // I assume you just want to see if it is checked
    if ($('#profile_visible').is(':checked')) {

        $.ajax({
            url: 'inc/profileVisible.php',
            success: function (data) {
                  // jQuery has .html(), not innerhtml
                $('#resultProfileVisible').html( "success" );
                alert('Load was performed.');
            }
        });
    }
}) // <-- was missing closing parentheses

答案 2 :(得分:0)

像这样更改代码

$(document).ready(function(){
 $('#profile_visible').change(function(){ // handler when the checkbox is toggled
   if($(this).attr('checked')) { // check if it is checked
        $.ajax({
          url: 'inc/profileVisible.php',
          success: function(data) {
            $('#resultProfileVisible').html("success"); // change here
            alert('Load was performed.');
          }
      });
    }
  });
});

答案 3 :(得分:0)

我没有看到你的倾听者。尝试

$(document).ready(function() {
    $('#profile_visible').change(function() {
        if ($(this).attr('checked')) {
            $.ajax({
                url: 'inc/profileVisible.php',
                success: function(data) {
                $('#resultProfileVisible').html("success"); // change here
                    alert('Load was performed.');
                }
            });
        }
    });
});