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