动态查找jquery元素(如果存在)

时间:2016-01-26 05:34:59

标签: javascript jquery html dom

我有一个函数,如果调用它将更新另一个对象(如果存在)。事实上,当创建页面时,id是未知的。

所以,例如,继承我的代码:

$('.slides').on("slidestop", function() {
                    $this = $(this);
                    $.ajax({
                        url: "action.php?event=ITEM "+$this.attr("data-itemID") + " " + this.value+"&itemID="+$this.attr("data-itemID"),
                        type:'POST',
                        success: function(result){
                            //update brightness slider if it exists
                            $("#sl" + $this.attr('data-itemID')).val(15);
                            $("#sl" + $this.attr('data-itemID')).slider("refresh");
                        },
                    });
                });

HTML:

 <input class='dimmerSlider' type='range' id='3' value='4' min='0' max='15' step='1' data-highlight='true' data-itemID='3'/>

错误:

  

未捕获的TypeError:$(...)。slider不是函数

2 个答案:

答案 0 :(得分:3)

$("#$this.attr('data-itemID')").val(15);

我猜你想用attibute构建一个字符串

$("#" + $this.attr('data-itemID')).val(15);

或使用数据而不是attr

$("#" + $this.data('itemID')).val(15);

如果找不到元素,请回答第二个问题。

如果您选择一个带有jQuery的元素并且它不存在,那么当您运行针对它的方法时,它将被忽略。如果您需要知道它不存在,那么您可以检查长度

var x = $(".mySelector");
if (!x.length) {  //aka x.length===0
   console.log("not found");
}

答案 1 :(得分:0)

  

此外,该元素不保证存在,我该如何检查   还有吗?

尝试使用Attribute Equals Selector [name="value"].is()

  var elem = $("[id=" + $this.attr("data-itemID") + "]");
  if (elem.is("*")) {
    // do stuff
    elem.val(15)
    .slider("refresh");
  }