javascript - 通过 click() 检索 jQuery 中 div 的属性值

标签 javascript jquery html

抱歉,标题含糊不清。我正在使用 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);

这只执行 func2code 的值func2 也正在访问属性。但是func1没有执行!如何做到这一点?

然后我尝试了第二种方法。当用户单击 div 时,我可以使用以下代码片段执行这两个函数

$('#testId').click(function(){
        func1();
        func2();
    });

但现在我无法访问 code 的值属性并且它是未定义的!如何访问 code 的值func1 中的属性和func2

我知道我可以将参数传递给 func1func2如下所示,稍后访问这些值,

$('#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() 属性更好,因为您读取的所有数据都会知道它是附加参数,而只是您可能不知道它来自哪里的代码。取消 .call 保持方法中没有参数。

缺点

您需要知道,该调用的作用是什么。也许将 Vanilla 与 jQuery 混合在一起。 :)

LIVE DEMO

关于javascript - 通过 click() 检索 jQuery 中 div 的属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26406646/

相关文章:

javascript - 正则表达式,仅选取双引号内的值

javascript - 向 Iframe 添加元素

javascript - 如何将参数发送到 php 脚本(使用 ajax)以便将它们包含在服务器端?

javascript - Dotnetnuke 从模块调用 ajax

javascript - 使用 jQuery 编辑 iframe src

javascript - 从两个文本框输入动态创建单选按钮矩阵

javascript - ReactJS Devtools 只显示 <TopLevel>

javascript - 如何使用 javascript 发送多个文件而不是 jQuery 我想要每个文件一个进度条?

javascript - 如何确保在其他幻灯片功能完成之前不会发生其他 javascript/jQuery 功能?

iphone - 如何通过媒体查询区分 Android 和 iPad?