jQuery获取点击链接的ID

我在jQuery中有一个模态框,我创建它来显示一些嵌入代码。 我希望脚本获取被点击的链接的id ,但我似乎无法使其正常工作。

有谁知道我怎么做或为什么会这样?

我的jQuery代码是:

 function generateCode() { var answerid = $('.openembed').attr('id'); if($('#embed input[name="comments"]:checked').length > 0 == true) { var comments = "&comments=1"; } else { var comments = ""; } $("#embedcode").html('<iframe src="embed.php?answerid=' + answerid + comments + '" width="550" height="' + $('#embed input[name="size"]').val() + '" frameborder="0"></iframe>'); } $(document).ready(function () { $('.openembed').click(function () { generateCode(); var answerid = $('.openembed').attr('id'); $('#box').show(); return false; }); $('#embed').click(function (e) { e.stopPropagation() }); $(document).click(function () { $('#box').hide() }); }); 

我的加价是:

 Embed Embed 

你的问题在这里:

 $('.openembed') 

返回匹配元素的数组。 您应该只选择单击的元素。 如果您将click事件分配给具有此类的所有元素,则$('.openembed')可以正常工作。 但另一方面,你无法知道哪个被点击了。

但幸运的是在处理函数体中点击你可以调用$(this)

$(this)将返回当前(和单击的元素)。

 // var answerid = $('.openembed').attr('id'); // Wrong var answerid = $(this).attr('id'); // Correct // Now you can call generateCode generateCode(answerid); 

另一个错误是generateCode函数的主体。 在这里你应该传递所选元素的id。 这是正确的实现。

 function generateCode(answerid) { if($('#embed input[name="comments"]:checked').length > 0 == true) { var comments = "&comments=1"; } else { var comments = ""; } $("#embedcode").html(''); } 

在这里,我已经使用正确的行为实现了您的代码: http : //jsfiddle.net/pSZZF/2/

而不是引用将抓取class所有成员的类,您需要引用$(this)以便在单击时可以获得该唯一链接。

 var answerid = $(this).prop('id'); 
  $('.openembed').click(function () { generateCode(); var answerid = $(this).attr('id'); $('#box').show(); return false; }); 

使用$(this)。 $(’。openembed’)指的是多个链接。

 var answerid = $('.openembed').attr('id'); 

需要是

 var answerid = $(this).prop('id'); 

其他答案正在尝试修复click()函数,但您的问题实际上是使用generateCode函数。

您需要将单击的元素传递给generateCode函数:

 $('.openembed').click(function () { generateCode(this); 

并修改generateCode:

 function generateCode(element) { var answerid = element.id; 

当然var answerid = $('.openembed').attr('id'); 点击代码中的内容也不正确,但无论如何它似乎都没有做任何事情。

单击正确的锚点时获取id并将其传递给generateCode函数

 $('.openembed').click(function () { var answerid = $(this).attr('id'); generateCode(answerid) $('#box').show(); return false; }); 

改变你的function

 function generateCode(answerid) { // dont need this line anymore // var answerid = $('.openembed').attr('id');