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

时间:2012-03-21 19:15:11

标签: javascript jquery

我有一个按钮,可以创建一个新的引脚。那个引脚在div中。它还创建了一个隐藏的输入,以便在拖动时记录该引脚的位置。在我的创建Jquery代码中,我使用.data("my_id",pinNumber)标记了引脚的div和输入。创建新引脚时,PinNumber会递增。这意味着带有新引脚的div和输入都有一个名为my_id的数据键具有相同的值。

当一个用户在一个引脚上点击删除时,我希望它删除与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返回正确的引脚ID。但是我遇到了如何根据数据值而不是数据键选择元素的问题。

我该怎么做?如何选择所有元素或所有div或所有输入,无论数据值=指定值?我在说Jquery .data()而不是HTML数据标签。

PS我正在使用live(),因为这些引脚是在使用命中新引脚时创建的,因此当代码首次运行时DOM元素不存在。使用可以创建30个引脚。我需要一种方法,我认为data()方法最适合用于连接pin div和创建的输入。此外,.draggable()然后会使用相同的数据值向输入报告UI位置....需要帮助。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

var this_id = $(this).parent("div").data("my_id");
$('div').each(function() {
    var this = $(this);
    if(this.data("my_id") = this_id) {
        this.remove();
    }
});

这可能有用,尽管这是一个糟糕的例子。我认为.each表现不佳。