JavaScript OnClick处理程序不调用

时间:2010-05-10 22:59:58

标签: javascript jquery onclick

我在内联onclick中调用了一个javascript函数,如下所示:

<a href="#" onclick="removeAttribute('foo', 'bar');">Some Link</a>

但是当我点击链接时,没有任何反应。我有其他链接(与其他功能)绑定到onclicks在同一页面上的其他地方正常工作。所有指向“removeAttribute”函数的链接都失败了。

Firebug中没有错误,并且正在调用onclick事件处理程序 - 但由于某种原因,单步执行removeAttribute函数会在jQuery.js中的某个地方结束。在任何时候都不会调用removeAttribute。

如果我这样做:

javascript:removeAttribute('foo', 'bar');
在Firefox的地址栏中

。该函数被成功调用。

有人见过这个吗?

3 个答案:

答案 0 :(得分:4)

你在调用自己的方法吗?如果是这样,将它称为removeAttribute会很困惑,因为它已被定义为附加到DOM节点的方法。调用事件处理程序时,其作用域定义为单击的节点。您的代码可能在被单击的对象上调用内置方法。尝试使用其他名称或将您的方法放在Javascript对象中,以便可以显式调用它。

答案 1 :(得分:1)

试试这个:

<a href="javascript:removeAttribute('foo', 'bar');">Some Link</a>

由于href值的'#',它可能无法正常工作。因此,将javascript作为href,实际上与将其放在地址栏中是一样的。

答案 2 :(得分:0)

如果你正在使用jQuery,为什么不利用它呢?假设您的removeAttribute()版本与原生javascript方法removeAttribute()完全相同,您可以执行以下操作:

<script type='text/javascript'>
    $(document).ready(function(){
        $('a#somelink').click(function(){
            $('#foo').removeAttr('bar');
        });
    });
</script>