Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将选择器$(this)传递给函数的简单方法_Javascript_Jquery_Html - Fatal编程技术网

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"));
});