我有一个函数,如果调用它将更新另一个对象(如果存在)。事实上,当创建页面时,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不是函数
答案 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");
}