0

我陷入了一个 jquery 问题,我想在 HTMLonclick事件的 jquery 函数中传递参数。

HTML:

 <p><a href="#" class='cls1' onclick='func1("a1")'>Anchor1</a></p>
 <div><a href="#" class='cls1' onclick='func1("a2")'>Anchor2</a><div>
 <span><a href="#" class='cls1' onclick='func1("a3")'>Anchor3</a></span>

查询:

 function func1(var param)
 {
    var parnt = $(this).parent(); // i want to get parent, this only gives [object object]
    alert('Parent:'+parnt+' param:'+param) //alert parnt and param
    return false;
 }

我知道这很容易,但我就是找不到继续前进的正确方向。衷心感谢任何指导。谢谢你。

4

5 回答 5

2

警报框只能警报字符串。如果要查看对象,请使用console.log(). 它适用于除 IE 之外的所有浏览器。也摆脱'var'

function func1(var param){

}

如果要将函数绑定到单击事件,请使用on()

于 2013-03-01T11:25:04.690 回答
2

问题是“this”没有引用被传递的对象。一种解决方法是:

onclick='func1(this,"a1")'

并将功能更改为:

 function func1(obj,param)
 {
    var parnt = $(obj).parent();
    alert('Parent:'+parnt+' param:'+param) //alert parnt and param
    return false;
 }
于 2013-03-01T11:26:21.727 回答
2

您在父方法结果中获得对象,因为您需要指定要访问的属性:

$(".cls1").on("click", function(){

    var clickedID = $(this).attr("id"); // result :  "a1 or a2 or a3"

    var parentTag = $(this).parent().get(0).tagName;
}
于 2013-03-01T11:42:58.053 回答
1
  1. 您可以摆脱 HTML 中的 onclick 属性并在 JS 中绑定事件处理;
  2. 您可以分配一个事件处理程序来处理所有元素,并通过分析“this”变量来确定单击了哪个元素。
  3. 使用 console.log 和 console.dir 可以更好地了解变量是什么。
  4. 阅读文档和教程 - 你所做的非常简单,并且有很多关于它的东西:http: //api.jquery.com/category/events/ + http://justfuckinggoogleit.com/
  5. 掌握事件传播模型

我本可以为你编写代码,但我认为你自己学习很重要。祝你好运!

于 2013-03-01T11:25:17.380 回答
1
<a href="#" class='cls1' onclick="func1(\'' + a1 + '\')">Anchor1</a></p>
 <div><a href="#" class='cls1' onclick="func1(\'' +a2+ '\')">Anchor2</a><div>
 <span><a href="#" class='cls1' onclick="func1(\'' + a3 + '\')">Anchor3</a></span>

像这样调用函数..

function func1(param)
 {
    var parnt = $(param).parent(); // i want to get parent, this only gives [object object]
    alert('Parent:'+parnt+' param:'+param) //alert parnt and param
    return false;
 }

当你传递这样的字符串时,你必须使用转义字符..(\'' + a1 + '\')

于 2013-03-01T11:22:51.963 回答