无法获取点击链接的ID

时间:2012-09-04 09:59:44

标签: jquery

也许我疯了,但我无法获得被点击的<a>链接的ID。安全var工作正常,ID属性中有明确的内容。我错过了什么?

这是PHP -

<span id="<?php echo $load_post_content_nonce; ?>">
    <a href="<?php the_permalink(); ?>" id="<?php the_ID(); ?>" class="read-more" target="_blank">Read more...</a>
</span>

这是JS -

$(document).ready(function(){   

    $('a.read-more').live('click', function(e){

        e.preventDefault();

        var id = $(this).attr('id');
        var security = $(this).parent('span').attr('id');

    });

});

以下是其中一个链接的HTML输出 -

<span id="b494a85e81">
    <a id="6623" class="read-more" href="http://test.dynedrewett.com/warring-parents-told-to-face-up-not-fall-out-over-contact-with-children/">Read more...</a>
</span>

4 个答案:

答案 0 :(得分:4)

正如其他人所指出的,从jQuery 1.7开始,.live() 已弃用。即使在旧版本中,.delegate()现在也是处理委托事件的首选方法。对于更高版本,on()是处理委派事件的正确方法,如jQuery docs for .live()中所述,其中说明了如何移植到.on()

这个 适用于使用AJAX或其他方法在DOM准备好后动态生成的内容,但您必须使用正确的语法。要处理动态生成的.read-more链接的点击次数,请执行以下操作:

$(document).ready(function(){

    $(document).on('click', 'a.read-more', function(e) {
        e.preventDefault();

        var id = this.id;
        var security = $(this).parent('span').attr('id');
    });
});

$(document).on('click', 'a.read-more', function(e) {...})中,您可以将document替换为任何 static 父元素(在处理程序绑定时存在的元素,并保证永远存在) ',为了处理未来.read-more链接的点击;文档深入解释了用法。

截至本文撰写时,jQuery对象does not have a property named id;要访问元素的ID,您必须: - 使用.attr( 'id' )

- 使用原生DOM元素的id属性:$(element)[0].idelement.id

答案 1 :(得分:3)

使用此代码

  $(document).ready(function(){ 
     $('a.read-more').live('click', function(e)
      {
          e.preventDefault();
          var id = this.id;
          var security = $(this).parent('span').id;
       }); 
    });

你会在this.id找到id。

答案 2 :(得分:2)

Php生成的代码错误,此脚本必须正常工作。

另外,尝试从“live”转换为“on”,因为:

  

.on()方法将事件处理程序附加到当前选定的集合   jQuery对象中的元素。从jQuery 1.7开始,使用.on()方法   提供附加事件处理程序所需的所有功能。对于   帮助转换旧的jQuery事件方法,请参阅.bind(),   .delegate()和.live()。要删除与.on()绑定的事件,请参阅   .off()。附加仅运行一次然后删除的事件   本身,见.one()

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

答案 3 :(得分:1)

您的代码运行正常。

仅对ID你也可以这样做:

$(document).ready(function(){   

    $('a.read-more').on('click', function(e){

        e.preventDefault();

        var id = this.id;
        var security = this.parent('span').id;

    });

});

不使用.attr()

错误肯定来自 PHP代码