Javascript jQuery正在获取已单击链接的ID

Javascript jQuery正在获取已单击链接的ID,javascript,jquery,html,Javascript,Jquery,Html,我在jQuery中创建了一个模式框,用于显示一些嵌入代码我希望脚本获取所单击链接的id,但我似乎无法使其正常工作。 有人知道我是如何做到的,或者为什么会发生这种情况吗 我的jQuery代码是: function generateCode() { var answerid = $('.openembed').attr('id'); if($('#embed input[name="comments"]:checked').length > 0 == true) {

我在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('<code>&lt;iframe src="embed.php?answerid=' + answerid + comments + '" width="550" height="' + $('#embed input[name="size"]').val() + '" frameborder="0"&gt;&lt;/iframe&gt;</code>');
}

$(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()
    });
});
我的分数是:

<a href="#" id="7830" class="openembed">Embed</a>
<a href="#" id="9999" class="openembed">Embed</a>

使用$(这个)$('.openembed')指多个链接

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

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

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

var answerid = $(this).prop('id');
你的问题是:

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

var answerid = $(this).prop('id');
但幸运的是,在handler函数体中,单击可以调用
$(this)

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

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

function generateCode(answerid) {
    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>');
}
函数生成代码(应答ID){
if($('#嵌入输入[name=“comments”]:选中')。长度>0==true){
var comments=“&comments=1”;
}否则{
var注释=”;
}
$(“#嵌入代码”).html(“”);
}

在这里,我用正确的行为实现了您的代码:

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

$('.openembed').click(function () {
    var answerid = $(this).attr('id');
    generateCode(answerid)

    $('#box').show();
    return false;
});
改变你的功能

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

其他答案是试图修复click()函数,但您的问题实际上与generateCode函数有关

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

$('.openembed').click(function () {
    generateCode(this);
并修改生成代码:

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

当然
var answerid=$('.openembed').attr('id')也不正确,但它似乎没有任何作用。

在document.ready()中更改此行:
var answerid=$('.openembed').attr('id')
to
var answerid=$(this.attr('id'),应该可以工作了。准备在click事件的函数处理程序体中添加一个简短的解释,您应该删除
$('.openembed').attr('id')
并使用
$(this.attr('id')
您应该在
var answerid=$(this.attr('id')之后移动
generateCode
抱歉,但我不确定您现在有什么问题。如果我们切换到聊天,可能会更好。非常感谢和+1。你让我开心:)
function generateCode(element) {
    var answerid = element.id;