Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.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 Jquery.data(),如何检索具有匹配值的元素?_Javascript_Jquery - Fatal编程技术网

Javascript Jquery.data(),如何检索具有匹配值的元素?

Javascript Jquery.data(),如何检索具有匹配值的元素?,javascript,jquery,Javascript,Jquery,我有一个按钮,可以创建一个新的插针。该管脚位于一个div中。它还创建了一个hidden from input来记录该管脚在拖动时的位置。在我的Jquery代码创建过程中,我用.data(“my_id”,pinNumber)标记pin和输入的div。PinNumber在创建新管脚时递增。这意味着带有新管脚的div和输入都有一个名为my_id的数据键,其值相同 当用户在pin上单击delete时,我希望它删除该div以及与该div相关的输入。这是我的删除代码 $(".close").live("cl

我有一个按钮,可以创建一个新的插针。该管脚位于一个div中。它还创建了一个hidden from input来记录该管脚在拖动时的位置。在我的Jquery代码创建过程中,我用
.data(“my_id”,pinNumber)
标记pin和输入的div。PinNumber在创建新管脚时递增。这意味着带有新管脚的div和输入都有一个名为my_id的数据键,其值相同

当用户在pin上单击delete时,我希望它删除该div以及与该div相关的输入。这是我的删除代码

$(".close").live("click", function() {
  var this_id = $(this).parent("div").data("my_id");
$('div[data:my_id='+this_id+']').remove();
var this_id返回正确的pin id。但是我遇到了如何基于数据值而不是数据键选择元素的问题

我该怎么做?在数据值=指定值的情况下,如何选择所有元素、所有div或所有输入?我说的是Jquery
.data()
而不是HTML数据标记

PS我使用的是
live()
,因为这些管脚是在用户点击新管脚时创建的,所以当代码首次激活时DOM元素不存在。一次使用可以创建30个管脚。我需要一种方法,我认为
data()
方法最适合将pin div与创建的输入连接起来。此外,
.draggable()
然后将使用相同的数据值向输入报告UI位置。。。。我需要帮助

您可以使用并检查指定谓词中的数据值:

$("div, input").filter(function() {
    return $(this).data("my_id") == this_id;
}).remove();

尽管这是一个糟糕的例子,但这可能会奏效。我认为.each的性能很差。

请记住使用三重相等运算符===@Greg,在这种特殊情况下,您是否有理由被迫使用严格相等运算符?因为您不知道此id将是什么类型。在这里,您很可能不会遇到任何类型强制错误,但最好使用严格相等运算符来确保所比较的两个值的类型相同。唯一不正确的情况是当您试图确定某个值是null还是未定义时。something==null很好地解决了这个问题。我理解你的立场,尽管我没有分享:我实际上认为,当你实际上必须使用
===
而不是一直使用它时,使用
==
才是更好的选择。弱类型是Javascript的优势之一,在所有测试中都会不加区别地与之对抗,而不是像IMHO那样。现在,在这个特殊的例子中,我确实不知道这个id是什么类型,但我非常确定它与数据(“我的id”)是同一类型的,因为这个值首先是从数据(“我的id”)中获得的。因此,我不认为使用
=
实际上是必要的:)我同意弱类型是某些操作(例如动态创建新字符串)的一项资产,但我认为用于比较相等性的弱类型是语言的一个不好的部分,因为它会引入许多难以捕捉的错误。我还相信,不管我们的意见如何,两者都适用于这种情况:)与Greg Franko讨论等式运算符时,我意识到您在条件表达式中使用赋值运算符
=
,而不是等式运算符
=
==
中的一个。最后的结果可能不是你想要的。事实上,我的意思是,实际上,我也不会去的===
var this_id = $(this).parent("div").data("my_id");
$('div').each(function() {
    var this = $(this);
    if(this.data("my_id") = this_id) {
        this.remove();
    }
});