Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.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
Jquery 使用「;这";在超链接onclick中_Jquery_Html_Events - Fatal编程技术网

Jquery 使用「;这";在超链接onclick中

Jquery 使用「;这";在超链接onclick中,jquery,html,events,Jquery,Html,Events,Html代码: <a id='link1' href='#' name='john' >test</a> <br/><br/> <a id='link2' href='#' name='john' onclick="showName();">test</a> <br/><br/> <a id='link3' href='#' name='smith' onclick="showName();"&

Html代码:

<a id='link1' href='#' name='john' >test</a>
<br/><br/>
<a id='link2' href='#' name='john' onclick="showName();">test</a>
<br/><br/>
<a id='link3' href='#' name='smith' onclick="showName();">test</a>
还有小提琴:

为什么第二和第三个链接不起作用? 顺便说一句,出于某些原因,我需要使用命名函数。 所以我知道:

 $('a').on('click', function(){
          alert($(this).attr('name'));
      });

将以某种方式解决问题,但我确实需要使用命名函数和访问超链接属性。


更新:感谢所有对此帖子做出贡献的人。我对你感激不尽。我很欣赏所有这些答案,但由于同时有多个正确答案,我不知道如何将所有这些答案同时标记为答案。如果所有标签都以
链接开始,那么您可以这样做

  $('[id^=link]').on('click', function(){
          alert($(this).attr('name'));
      });

如果您的所有标记都以
链接开始,那么您可以这样做

  $('[id^=link]').on('click', function(){
          alert($(this).attr('name'));
      });

第二个和第三个链接不应该工作,因为在javascript函数中“this”指定了当前对象,所以当时javascript找不到当前对象,所以必须在函数参数中传递“this”。

第二个和第三个链接不应该工作,因为在javascript函数中“this”指定当前对象,以便javascript当时无法找到当前对象,因此必须在函数参数中传递“this”..

Solution| 您正在查找
e.target.node
,因此:

$('body').on('click', function(e){
    alert(e.target.name);    
});
简化你的生活

此外,如果您不希望它在整个
正文中运行,那么您也可以执行以下操作:

$('#link1, #link2, #link3').on('click', function(e){
您以前的代码不起作用的原因是因为规则。在jQuery文档中,声明“如果调用的函数是使用function.bind()创建的,
这个
将是创建函数时传递给.bind()的第一个参数。”在您的例子中,我认为它没有定义

使用Chrome中的控制台功能,结果证明我是对的。看看这个屏幕截图,试着了解发生了什么。你知道你做错了什么吗

当引发事件时,例如单击事件,它们会随身携带重要信息和引用。在单击事件中,事件对象具有对目标的引用。使用它,您可以获得引发事件的元素的id

解| 您正在查找
e.target.node
,因此:

$('body').on('click', function(e){
    alert(e.target.name);    
});
简化你的生活

此外,如果您不希望它在整个
正文中运行,那么您也可以执行以下操作:

$('#link1, #link2, #link3').on('click', function(e){
您以前的代码不起作用的原因是因为规则。在jQuery文档中,声明“如果调用的函数是使用function.bind()创建的,
这个
将是创建函数时传递给.bind()的第一个参数。”在您的例子中,我认为它没有定义

使用Chrome中的控制台功能,结果证明我是对的。看看这个屏幕截图,试着了解发生了什么。你知道你做错了什么吗


当引发事件时,例如单击事件,它们会随身携带重要信息和引用。在单击事件中,事件对象具有对目标的引用。使用它,您可以获得引发事件的元素的id

只有当JS代码位于此html标记之前,或者找不到指定的函数时,
onclick
属性才起作用

在您的示例中,这是有效的:

但是jQuery是更好的方法,例如:

$('a').click(function(){
    alert($(this).attr('name'));
});

onclick
属性仅在JS代码位于此html标记之前或找不到指定函数时有效

在您的示例中,这是有效的:

但是jQuery是更好的方法,例如:

$('a').click(function(){
    alert($(this).attr('name'));
});

以下是更新后的工作代码

您需要在JQuery将访问的所有元素之间保留一些公共属性,然后可以将事件绑定到这些元素上

根据您的评论,这是如何使用命名函数的。如果我能在更多代码方面帮助您,请告诉我。

$(function()
  {
      $('.click').on('click', showName );
  }
)

function showName()
{
    alert($(this).attr('name'));
   // alert("Hello World");
}

这是更新的小提琴=>

这是更新的
工作代码
=>

您需要在JQuery将访问的所有元素之间保留一些公共属性,然后可以将事件绑定到这些元素上

根据您的评论,这是如何使用命名函数的。如果我能在更多代码方面帮助您,请告诉我。

$(function()
  {
      $('.click').on('click', showName );
  }
)

function showName()
{
    alert($(this).attr('name'));
   // alert("Hello World");
}
这是更新的小提琴=>

试试这个

演示小提琴






函数showName(元素) { 警报($(元素).attr('name')); }
通过调用
showName(this)
将当前元素传递给函数

编辑2

更新的小提琴

试试这个

演示小提琴






函数showName(元素) { 警报($(元素).attr('name')); }
通过调用
showName(this)
将当前元素传递给函数

编辑2

更新的小提琴

只需查看小提琴:

您应该在此函数中传递一个参数,然后使用此参数

function showName(pthis)
{
    alert($(pthis).attr('name'));
}

<a id='link3' href='#' name='smith' onclick="showName(this);">test</a>
函数showName(pthis)
{
警报($(pthis.attr('name'));
}
看看小提琴:

您应该在此函数中传递一个参数,然后使用此参数

function showName(pthis)
{
    alert($(pthis).attr('name'));
}

<a id='link3' href='#' name='smith' onclick="showName(this);">test</a>
函数showName(pthis)
{
警报($(pthis.attr('name'));
}

试试这样的方法

  $('[id^=link]').on('click', function(){
          alert($(this).attr('name'));
      });
html


试试这样的

  $('[id^=link]').on('click', function(){
          alert($(this).attr('name'));
      });
html


这是jQuery的一项功能,像这样绑定的函数中的“This”将:

如果调用的函数是使用function.bind()创建的,则 将是在调用时传递给.bind()的第一个参数 函数已创建

其他内联函数不起作用,因为“this”是当前执行上下文(我认为是窗口)

如果您确实需要使用命名函数,可以这样做:

$(function()
  {
      $('#link1').on('click', function(){
          showName($(this));
      });
  }
)

function showName(clickedLink)
{
    alert(clickedLink.attr('name'));
}
<