抱歉,标题含糊。我正在使用jQuery。我的应用程序中有一个小场景,被卡住了。
问题:我的脚本中有两个函数分别为func1
和func2
。每当用户单击div元素时,我都想执行这两个函数,还要code
在这两个函数中访问属性的值。
<div id="testId" code="102">Click ME</div>
。
代码:
<html>
<body>
<div id="testId" code="102">Click ME</div>
<script type='text/javascript' src='jquery.js'></script>
<script type='text/javascript' src='script.js'></script>
</body>
</html>
script.js:
var code1 = "";
var code2 = "";
func1 = function(){
code1 = $(this).attr('code');
alert("code1 is "+code1);
}
func2 = function(){
code2 = $(this).attr('code');
alert("code2 is "+code2+'2');
}
$('#testId').click(func1, func2);
/*$('#testId').click(function(){
func1();
func2();
});*/
我想访问code="102"
我的两个函数中的值。我尝试了两种方法。首先,我尝试了以下代码段:
$('#testId').click(func1, func2);
这只会执行func2
。code
也可以通过访问属性的值func2
。但是func1
没有执行!这该怎么做?
然后我尝试了第二种方法。每当用户点击div时,我都可以使用以下代码段执行这两个功能
$('#testId').click(function(){
func1();
func2();
});
但是现在我无法访问code
attribute的值,并且它是未定义的!如何code
在func1
和中访问属性的值func2
?
我知道我可以传递参数,func1
并func2
像下面,后来访问的值,
$('#testId').click(function(){
func1('value of code');
func2('value of code');
});
但是,如果可能,我正在寻找其他解决方案。
最终,我正在寻找一种既可以执行两个功能,又可以访问code
属性值的方法。任何建议将不胜感激!
首先,您要使用此.Click()
方法,如果您使用.click(func1, func2)
它,则希望.click([eventData],handler)。因为只执行function2,所以它是一个处理程序。
好了,您将需要执行以下命令:
$('#testId').click(function(){
func1();
func2();
});
如果您需要获取代码,则最好创建一个数据属性,例如:
<div id="testId" data-code="102">Click ME</div>
$('#testId').click(function(){
func1.call(this);
func2.call(this);
});
func1 = function(){ console.log($(this).data('code'));
code1 = $(this).data('code');
alert("code1 is "+code1);
}
使用.call(),您可以发送谁正在调用该函数。
优势:
那么.data()attr更好,因为您读取的所有数据将使您知道它是附加参数,而仅是您可能不知道它来自何处的代码。取消.call的使用,使方法保持参数清洁。
坏处
您需要知道,该呼叫做什么。也许将Vanilla与jQuery混合使用。:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句