Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.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 如何使用;这";调用函数的元素的引用?_Javascript_Jquery_Reference_This - Fatal编程技术网

Javascript 如何使用;这";调用函数的元素的引用?

Javascript 如何使用;这";调用函数的元素的引用?,javascript,jquery,reference,this,Javascript,Jquery,Reference,This,例如,我想要一个被许多元素用来获取调用元素属性的函数 function example(){ var name = //name of the calling element "$(this).attr('name')" } <button name="somename1" onclick="example()">Button1</button> <button name="somename2" onclick="example()">Button2&

例如,我想要一个被许多元素用来获取调用元素属性的函数

function example(){
    var name = //name of the calling element "$(this).attr('name')"
}
<button name="somename1" onclick="example()">Button1</button>
<button name="somename2" onclick="example()">Button2</button>
函数示例(){
var name=//调用元素“$(this.attr('name')”的名称
}
按钮1
按钮2

因此,如果名为“somename1”的按钮调用函数,变量“name”将分配给“somename1”,因此如果“somename2”调用它,它将分配给“somename2”

您实际上不需要使用
this
来实现这一点,您可以只使用事件对象的
target
属性——这种技术也不是特定于jquery的,它只是标准的JavaScript:

function handleClick(evt){
    var name = evt.target.name;
}
$(this.attr('name')
-仅当您使用jquery bind/on/click等时,此选项才有效

您可以按如下方式修改HTML:

<button name="somename1" onclick="example(this)">Button1</button>

如果使用jQuery绑定事件处理程序,则
将引用触发事件的元素。单击时,我会向所有要执行该函数的元素添加一个类,如下所示:

<button name="somename1" class="example">Button1</button>
<button name="somename2" class="example">Button2</button>

使用此:

function exampleFunction(exampleElement) {
    var name = exampleElement.name;
}

<button name="somename1" onclick="exampleFunction(this)">Button1</button>
<button name="somename2" onclick="exampleFunction(this)">Button2</button>

不带
onclick
属性。

使用jQuery事件绑定

$(document).ready(function(){
    $(document).on('click', 'button', example);
});
function example(){
    var name = $(this).attr('name');
}

或者简单地说:

$('button[name^=somename]').click(function(){
   var myName = this.name;
   alert(myName);
});

我相信一些更常见的方法仍然有效,但它们似乎已经集成,不需要设置参数名。 这会在我的浏览器上引发一个错误

函数handleClick(事件){
让nameContainer=document.getElementById(“nameContainer”);
nameContainer.innerHTML=event.target.name;
}
显示名称

$(this)
就是它为我做的(我刚刚使用了
this
)。javascript如何知道当前html元素驻留在
元素
参数中?我试图搜索
javascript元素关键字
,但找不到相关信息。@AlikElzin kilaka元素只是一个变量,而不是“元素”类型。要查找的关键字是“this”,但它在javascript中并不是一个简单的关键字。我如何也将事件作为参数传递?您仍然需要执行
onclick=“example(event)”
,因此这似乎毫无意义
$('button').click(function() {
  var name = $(this).attr('name');
});
$(document).ready(function(){
    $(document).on('click', 'button', example);
});
function example(){
    var name = $(this).attr('name');
}
<button name="somename1">Button1</button>
<button name="somename2">Button2</button>
function example(){
   var myName = this.name;
   alert(myName);
}

$('button[name^=somename]').click(example);
$('button[name^=somename]').click(function(){
   var myName = this.name;
   alert(myName);
});