Javascript jQuery正在获取已单击链接的ID
我在jQuery中创建了一个模式框,用于显示一些嵌入代码我希望脚本获取所单击链接的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) {
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><iframe src="embed.php?answerid=' + answerid + comments + '" width="550" height="' + $('#embed input[name="size"]').val() + '" frameborder="0"></iframe></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')单击代码中的code>也不正确,但它似乎没有任何作用。在document.ready()中更改此行:var answerid=$('.openembed').attr('id')
tovar 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;