Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.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
Javascript 仅对具有特定属性的元素单击运行函数_Javascript_Jquery - Fatal编程技术网

Javascript 仅对具有特定属性的元素单击运行函数

Javascript 仅对具有特定属性的元素单击运行函数,javascript,jquery,Javascript,Jquery,现在,我希望该函数仅在单击元素时运行,但它在每次单击时都会运行 (function($) { $(document).ready(function() { $('a').data('popup', 'true').click(function(e) { console.log($(this).data('popup')); e.preventDefault(); }); }); })(jQuery);

现在,我希望该函数仅在单击
元素时运行,但它在每次
单击时都会运行

(function($) {
    $(document).ready(function() {
        $('a').data('popup', 'true').click(function(e) {
            console.log($(this).data('popup'));
            e.preventDefault();
        });
    });
})(jQuery);
获取/设置与元素关联的数据;它不会像您期望的那样过滤元素。实际上,您正在所有锚元素上设置一个键/值对数据,然后将事件侦听器附加到所有锚元素。换句话说,当您使用
.data()
方法设置数据时,将返回原始jQuery对象(这意味着
.click()
方法仍在将单击事件处理程序附加到所有原始选定的锚元素)

你在找一个新的工作。在这种情况下,选择器
a[data popup=“true”]
将选择属性值为
true
的锚元素

$('a[data-popup="true"]').click(function(e) {
    console.log($(this).data('popup'));
    e.preventDefault();
});
$('a[data-popup="true"]').click(function(e) {
    console.log($(this).data('popup'));
    e.preventDefault();
});

下面的代码将附加代码中所有现有链接的数据

$('a').data('popup', 'true').click(function(e) 
你可以试试这个:

<a id="popid" data-popup="true"></a>

(function($) {
    $(document).ready(function() {
        $('#popid').click(function(e) {
            console.log($(this).data('popup'));
            e.preventDefault();
        });
    });
})(jQuery);

$('a[data-popup="true"]').click(function(e) {
    console.log($(this).data('popup'));
    e.preventDefault();
});