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');
});
});