-2

所以 live 功能不起作用,但这也不适用于.click(function(e){.

由于课程是正确的,它开始变得令人沮丧,但它只是无法识别点击。帮助?

[更新] JavaScript:(将 .live() 切换为 .on() 但仍然没有成功)

<script type="text/javascript">
$(function() {

$('.pch').on('click', function(e){ 
 e.preventDefault();
alert('hi');
});

});
</script>

HTML:

<a id="nava" onclick="changeTitle('ReQwire - Home');" href="home" jsload="/slideshow.php" class="notactive pch">
<img id="navaa" src="/graphics/icons/navhome.png" />
<div style="display:none;margin-top:-1px;" id="navab">Home</div>
</a>

感谢 Anton 的工作代码:

$(document).on('click','.pch',function(e){
    e.preventDefault();
    alert('hi');
});
4

3 回答 3

4
  1. 考虑使用 .on() live 在新版本的 jQuery 中已弃用。

  2. 在使用该函数之前,您是否调用了 jQuery 脚本?

  3. 是否需要动态添加项目,您需要委托给最近的静态元素,如下所示

    $(document).on('click','.pch',function(){
        //Code here
    });
    
于 2013-06-10T14:06:23.613 回答
3

你不能命名一个变量this,它是一个保留字。使用不同的变量名。

var $this = $(this);

此外,.live在最新的 jQuery 版本中已弃用(甚至可能删除)。您应该使用不同的方法来附加您的活动。

.on是您想要用于所有事件处理需求的方法,但它不像更改.live.on. 语法略有不同。

如果.pch元素在页面加载时存在,并且在此之后不会添加其他元素,您可以使用.click,(或.on('click)。

$('.pch').on('click', function(e){ 
    e.preventDefault();
    alert('hi');
});

或者

$('.pch').click(function(e){ 
    e.preventDefault();
    alert('hi');
});

如果您需要将事件绑定到页面加载后添加的元素,则需要对.on.

$(document).on('click', '.pch', function(){
    e.preventDefault();
    alert('hi');
});

而不是$(document),您可以(并且应该)使用最近的静态父元素(在页面加载后不会添加/删除)。

于 2013-06-10T14:08:46.920 回答
0

.live() 自 jQuery 1.8 起已弃用,请改用 .on()。

http://api.jquery.com/on/

于 2013-06-10T14:05:08.303 回答