jQuery获取点击链接的ID

use*_*377 4 javascript jquery html5

我在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()
    });
});
Run Code Online (Sandbox Code Playgroud)

我的加价是:

<a href="#" id="7830" class="openembed">Embed</a>
<a href="#" id="9999" class="openembed">Embed</a>
Run Code Online (Sandbox Code Playgroud)

fre*_*dev 12

你的问题在这里:

$('.openembed')
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

另一个错误是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>');
}
Run Code Online (Sandbox Code Playgroud)

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


dsg*_*fin 5

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

var answerid = $(this).prop('id');
Run Code Online (Sandbox Code Playgroud)