Jquery 使用「;这";在超链接onclick中
Html代码: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();"&
<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'));
}
<