.click功能对我不起作用

时间:2009-07-19 12:00:00

标签: javascript jquery

我的脚本中有很多jquery函数但是特定的函数不起作用,这是我的函数

  $('#delete').click(function() {
          var id = $(this).val();
          $.ajax({
                     type: 'post',
                     url: 'update.php',
                     data: 'action=delete&id=' + id ,
                     success: function(response) {
                             $('#response').fadeOut('500').empty().fadeIn('500').append(response);
                             $(this).parent('tr').slideUp('500').empty();
                           }
                 });        
         });

像这样的类似功能正在运作

<!-- WORKING FUNCTION -->
$('#UpdateAll').click(function() {
            $.ajax({
            type: 'post',
            url: 'update.php',
            data: 'action=updateAll',

            success: function(response) {
                $('#response').fadeOut('500').empty().fadeIn('500').append(response);

                $('#table').slideUp('1000').load('data.php #table', function() {
                    $(this).hide().appendTo('#divContainer').slideDown('1000');
                });
            }
            });     
        });

我用firebug检查,控制台没有显示任何错误,我检查html源的值正在加载正确,我检查我的PHP文件5次它是正确的无法弄清楚问题。请帮助。

11 个答案:

答案 0 :(得分:34)

我连续6小时都遇到了完全相同的问题!解决方案是使用jquery'live'。

就是这样。

$('#submit').live('click',function(){
...code...
});

答案 1 :(得分:5)

对于第一个,我在click匿名函数中添加了一个快速而讨厌的alert(),以确保它被触发。消除它可能无法正常工作的原因。此外,尝试使用Live HTTP标头或Firebug的控制台来查看是否正在发送AJAX请求。

如果没有触发点击,请查看您的选择器是否正确。我经常这样做(非常讨厌)

var testSelector = 'p:first ul li:last';

$(testSelector).css( { border: '1px solid red' } );

它并不总是可见,但如果你在生成的标记中看到style =“border:1px solid red”,你知道你的选择器在球上。

也许你有另一个覆盖它的点击?尝试使用

$('#delete').bind('click', function() {
  // do it
});

答案 2 :(得分:4)

我遇到了一个与我正在研究的快速示例相同的问题。解决方案是将点击放在$(document).ready中。我试图在它准备好使用之前使用我的元素。

在尝试使用元素之前,等待DOM准备就绪是基本的JavaScript,但是......无论出于何种原因我都忘了这样做,所以也许你也会遇到同样的情况。

答案 3 :(得分:4)

$(document).on('click', '#selector', function(){
     // do something
});

jQuery 1.7+折旧.live()现在使用.on()代替:)

答案 4 :(得分:1)

我不知道这是否适用于您的上下文,但如果您有部分页面被AJAX加载,那么您需要在加载内容后绑定点击处理程序,这意味着$(文档).ready无法正常工作。我已多次遇到这个问题,某些事件会在页面的某些部分重新加载之前触发,然后突然间事件似乎停止了。

答案 5 :(得分:1)

只需将.click$(document).ready(function(){ ... });一起使用,因为您尝试在不存在的元素上应用click事件。

答案 6 :(得分:0)

1)在最后});之前,您应该添加return false;

2)你确定#delete存在吗?另外,你确定是独一无二的吗?

答案 7 :(得分:0)

这是一个很长的镜头,但要注意这一点很好。 http://code.google.com/p/fbug/issues/detail?id=1948

如果您不使用Firefox 3.5,则可能不是问题。

答案 8 :(得分:0)

而不是 id = delete 我在html和js ('。delete')中将其更改为 class = delete ,它是现在工作正常,但再次尝试使用id它不起作用。

谢谢大家的帮助,我没有任何问题,无论是id还是类,只是函数现在有效。

答案 9 :(得分:0)

你可以做的事情很少:

  1. 像Elmo Gallen和Shooz Eh建议的那样,将你的代码放在$(document).ready(function(){...});
  2. 在您的$('#delete').click(function(){...});代码
  3. 之后为您的<button>事件处理代码
  4. 像Parikshit Tiwari建议的那样使用$('#submit').live('click',function(){...});
  5. 这些中的每一个都应该可以正常工作。

    编辑:oops,没有看到这被问到'09:D

答案 10 :(得分:0)

我认为你必须使用.on()函数在jQuery中运行动态代码,如下所示:

$(document).on("click","#delete",function(){ });