Jquery Can';无法获取已单击链接的ID

Jquery Can';无法获取已单击链接的ID,jquery,Jquery,也许我疯了,但我找不到 您的代码工作正常 只需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

也许我疯了,但我找不到

您的代码工作正常

只需
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
code

中,错误是肯定的。如果PHP生成的代码错误,此脚本必须正常工作

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

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

使用此代码

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

您将通过这个.id找到id。

正如其他人指出的,
.live()
在jQuery 1.7中已被弃用。即使在旧版本中,
.delegate()
现在也是处理委派事件的首选方法。对于更高版本,
on()
是处理委派事件的正确方法,如中所述,其中说明了如何将端口连接到
.on()

这确实适用于使用AJAX或其他方法在DOM就绪后动态生成的内容,但必须使用正确的语法。要处理动态生成的
上的单击。请阅读更多
链接,请执行以下操作:

$(document).ready(function(){

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

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

$(文档)中,在('click','a.read-more',function(e){…})
上,可以用任何静态父元素替换
文档
(在绑定处理程序时存在的一个,并且保证“永远”存在,以便处理未来
上的单击。请阅读更多
链接;文档详细解释了该用法

在撰写本文时,jQuery对象;要访问元素的ID,您必须:
-使用
.attr('id')



-使用本机DOM元素的
id
属性:
$(元素)[0].id
元素.id

你的php代码的html输出对我来说很好:。你确定它有值吗?你能发布由php代码生成的html吗?@JoãoSilva-是的,当然。我甚至添加了
$load\u post\u content\u nonce
值以确保它,因为它正在被提取,但仍然没有任何内容。谢谢。也可以正常工作:。PHP可能会生成双
quotes,这样标记就无效了吗?如果他在jQuery上使用的是旧版本。on不起作用。在提出建议之前,你需要确定他使用的是哪种jQuery版本。我想他可以从我引用的文本的这一部分中找到这一点:从jQuery 1.7
。on
在我的版本(1.7.1)中起作用吗?”,但由于被单击的链接是由AJAX生成的,它没有检测到单击,所以我使用了
.live()
。谢谢。@DavidGard确实可以处理由AJAX生成的内容,这就是它取代
.live()
.live()的全部原因
已被弃用。它的语法与正常用法稍有不同,请参阅我的答案以了解正确的用法。@nbrooks-你说得很对,
.on()
确实可以处理AJAX生成的内容。早些时候,我尝试将其用作
$('a.read-more')。on('click',function(e).
,但不起作用(虽然现在看起来也是-head->brick wall->repeat!),所以我显然有一个错误(尽管Firebug没有发现)。感谢您的输入。
.attr()
是一个很好的方法。使用
.attr()
它会提醒
6623
,但不使用
.attr()
它提醒
未定义
我知道它已被弃用,但他使用了它,也不知道他使用的是哪个版本的jQuery。这个答案完全不正确。从什么时候开始可以执行
$(This).id
?替换
$(This).id
这个.id
@AndreaTurri:我不明白你想在那把小提琴上证明什么,除了我最初的陈述是正确的。注意你在做
这个.id
而不是
$(这个).id
,当您在HtmleElement而不是jQuery对象上操作时,它是有效的。您还将注意到,
security
变量未定义,因为您试图从
jQuery
对象检索
id
属性,该对象未定义(这与尝试从
$中检索
id
(此)
)是一样的。
.live()
被折旧,但
.on()
似乎不适用于AJAX生成的内容。@DavidGard.on()函数仅包含在jQuery 1.7中,它在早期版本中不起作用versions@ShahzadImam-我包括jQuery的最新版本(src=“),我认为它目前是1.7.1,所以我有
.on()
可用,但它的工作与
.live()
不同。无论这是有意还是无意,我都不知道,我还没有时间完全消化这些文档。
$(document).ready(function(){   

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

        e.preventDefault();

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

    });

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

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

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