通过';这';作为JavaScript中的参数

通过';这';作为JavaScript中的参数,javascript,jquery,Javascript,Jquery,我有以下代码: HTML: <label id="copyAddress" class="copyAddress" onclick="CopyAddress(this);"> Copy Address </label> function CopyAddress(copyAddressLink) { PopulateTarget(copyAddressLink); } function PopulateTarget(link) { var

我有以下代码:

HTML:

<label id="copyAddress" class="copyAddress" onclick="CopyAddress(this);">
    Copy Address
</label>
function CopyAddress(copyAddressLink) {    
  PopulateTarget(copyAddressLink);   
}

function PopulateTarget(link) {
  var targetGroup = $(link).closest('someClass');    
}
<label id="copyAddress" class="copyAddress">Copy Address</label>
$(document).ready(function(){
    $('#copyAddress').click(function(){
        var targetGroup = $(this).closest('.someClass');    
    });
});
在PopulateTarget函数中,“link”变量未定义,而在CopyAddress中,它的值应为

什么会导致这个问题?在Java脚本中传递参数是否有一些限制?这应该如何表现?如果您需要更多代码发布,请告诉我。

您在“someClass”上缺少一个点,应该是“.someClass”

也许你的代码会在你修复后工作。但是:因为您使用的是jQuery(看起来是),所以应该以jQuery的方式附加单击处理程序,而不是在HTML上内联。这意味着:

$(document).ready(function(){
    $('#copyAddress').click(CopyAddress);
})

function CopyAddress() {    
    PopulateTarget(this);   
}

function PopulateTarget(link) {
    var targetGroup = $(link).closest('someClass');    
}

看起来您正在使用jQuery:

您可以使用将此绑定到特定值。它是这样使用的:

jQuery.proxy(function () { console.log(this); }, this);

您不应该混合使用HTML和JS。相反,您应该在JS代码中以编程方式附加JS处理程序:


复印地址
//等待页面加载后再开始查找元素
$(函数(){
//假设jquery1.7
$(#copyAddress')。在('单击',copyAddress');
//…或者,对于较旧的jQuery
$(“#copyAddress”)。单击(copyAddress);
函数copyAddress(evt){
//传入的事件对象的“target”属性是
//事件第一次触发时。
大众目标(evt.target);
}
});
在上述情况下,您可以使用
this
而不是
evt.target
,因为您将事件直接绑定到该对象上。但是,如果页面上有多种执行此功能的项目,则此功能将更加强大。您可以将事件处理程序附加到某个父对象上一次,然后在回调期间询问单击了哪个元素。这看起来像:

// Watch for any element with a copyAddress class to be clicked on,
// even if they are added after this code has run
$(document.body).on('click','.copyAddress',function(evt){
  var target = evt.target;
  console.log("You clicked on",target);
});

既然您无论如何都在使用jQuery,为什么要使用咄咄逼人的Javascript

改用这个:

HTML:

<label id="copyAddress" class="copyAddress" onclick="CopyAddress(this);">
    Copy Address
</label>
function CopyAddress(copyAddressLink) {    
  PopulateTarget(copyAddressLink);   
}

function PopulateTarget(link) {
  var targetGroup = $(link).closest('someClass');    
}
<label id="copyAddress" class="copyAddress">Copy Address</label>
$(document).ready(function(){
    $('#copyAddress').click(function(){
        var targetGroup = $(this).closest('.someClass');    
    });
});

。是否确定
PopulateTarget
函数中的
链接
未定义?或者
$(link)
的返回值是否未定义?在
CopyAddress
put
console.log中的
PopulateTarget
(“CopyAddressLink值:”,CopyAddressLink)和在
PopulateTarget
put
console.log(“链接值:”,链接)以上
var targetGroup=…
然后查看控制台以查看值是什么。如果您发布HTML结构,我们可以查看
.closest()
中的选择器是否实际工作。我打赌这就是原因。此外:您确定您在页面上有jQuery吗?
end
?!你把事情搞混了;)哎呀!感谢您注意:)同时使用了太多Ruby和JS。但是,在这种情况下,这是不必要的。应该是“.someClass`他有一个错误。。。没有元素类型
someClass
@gdoron-正确。固定的。谢谢