Javascript 将选择器$(this)传递给函数的简单方法
我有几个动态创建的带有数据属性的Javascript 将选择器$(this)传递给函数的简单方法,javascript,jquery,html,Javascript,Jquery,Html,我有几个动态创建的带有数据属性的',我将这些属性附加到另一个中,如下所示: var jobtypehtml = ""; for (var i = 0; i < arrayLength; i++) { jobtypehtml += `<div class="jobtypeselect" data-jobtypechecked="0" onClick="check()"></div>`; } $('#jobtype').append(jobtypehtm
',我将这些属性附加到另一个
中,如下所示:
var jobtypehtml = "";
for (var i = 0; i < arrayLength; i++) {
jobtypehtml += `<div class="jobtypeselect" data-jobtypechecked="0" onClick="check()"></div>`;
}
$('#jobtype').append(jobtypehtml);
如您所见,我希望获得单击的
的数据属性。我看到了一些关于.call和.apply的解决方案,但这对我来说相当复杂。有没有更简单的方法来实现这一点
编辑:
function check(){
alert($(this).data('jobtypechecked'));
}
上述功能提示“未定义” 如上所述,$.数据应该可以解决您的问题。我为您准备了一个工作提示片段:
var jobtypehtml=“”;
对于(变量i=0;i<3;i++){
jobtypehtml+='';
}
$(文档).on('单击',').jobtypeselect',函数(){
console.log('Div clicked:'+$(this.data('jobtypechecked'));
});
$('#jobtype').append(jobtypehtml)代码>
.jobtypeselect{
宽度:100px;
高度:20px;
边框:1px纯黑;
}
您可以将此传递到呼叫站点的单击功能中,如下所示:
var jobtypehtml = "";
for (var i = 0; i < arrayLength; i++) {
jobtypehtml += `<div class="jobtypeselect" data-jobtypechecked="0" onClick="check(this)"></div>`;
}
$('#jobtype').append(jobtypehtml);
function check(elm){
alert($(elm).getAttribute('data-jobtypechecked'));
}
var jobtypehtml=“”;
对于(变量i=0;i
我建议您使用动态创建的元素
$('jobtype')。在('click','jobtypeselect',选中)上;
var jobtypehtml=“”;
对于(变量i=0;i<10;i++){
jobtypehtml+=`Ele from Stack`;
}
$('#jobtype').append(jobtypehtml);
函数检查(){
log($(this.data('jobtypechecked'));
}
试试这个:
$('.jobtypeselect').on ("click", function(e) {
alert ($(this).data("jobtypechecked"));
});
或:
如果您只想使用jQuery并从标记中去掉onClick=“check()”。您可以使用函数$。data
如下:$(this)。data('jobtypechecked')
我也试过了,我忘了提到。我建议创建一个通用的点击处理程序,并在那里处理所有需要的东西。使用这种方法可以使代码更加清晰。谢谢,这是可行的,但如果我在。它只有在我使用$(document)时才起作用。在('click'…eventhandler)上调用函数。你能告诉我为什么吗?这是事件委派()。这总是为动态创建的元素创建事件处理程序的更好方法。这看起来很巧妙。:)但是,将eventhandler设置为$('#jobtype')而不是设置为$('document')?@stefanhalbeisen减少了查找的范围。这样,js引擎只检查jobtype
中的元素,避免与文档中的其他事件发生冲突。
$('.jobtypeselect').on ("click", function(e) {
alert ($(this).data("jobtypechecked"));
});
$(document).on ("click", ".jobtypeselect", function(e) {
alert ($(this).data("jobtypechecked"));
});