我正在尝试使用javascript动态生成HTML。我对我页面上的按钮点击有约束力。我的页面上有多个按钮,这些按钮会导致我的元素被多次绑定,从而产生所需的结果,以便按下单击按钮的次数。
我的问题是有什么可以检查一个元素是否已经绑定在jquery中?如果是这样,我如何将其与jquery中的.live()函数合并。
这是我的代码:
$(document).ready(
function () {
$(':button').live("click", ".textbox, :button", function () {
alert("binding");
$(".textbox").click(function () {
defaultVal = this.defaultValue;
if (this.defaultValue) {
this.value = "";
}
});
$(".textbox").blur(function () {
if (this.value == "") {
this.value = defaultVal;
}
});
$('[name="numsets"]').blur(function () {
if (!parseInt(this.value)) {
$(this).val("you need to enter a number");
}
});
$('[name="weightrepbutton"]').click(function () {
var $numsets = $(this).parent().children('[name="numsets"]');
if ($numsets.val() != "you need to enter a number" && $numsets.val() != "Number of Sets") {
var numbersets = parseInt($numsets.val())
repandweight.call(this, numbersets)
$(this).hide();
$numsets.hide();
}
})
});
});
问题是第4行,每次单击一个按钮时,之前绑定的所有函数似乎都被绑定到同一个函数两次,这是一个问题。
感谢您的帮助!
答案 0 :(得分:3)
你这样做了两次!一个在另一个里面取出外部绑定,它应该工作
$(document).ready(function () {
$(document).on("click",".textbox",function () {
defaultVal = this.defaultValue;
if (this.defaultValue) {
this.value = "";
}
});
$(document).on("blur",".textbox",function () {
var item=$(this);
if (item.val() == "") {
item.val(defaultVal);
}
});
$(document).on("blur","input[name='numsets']",function () {
var item=$(this);
if (!parseInt(item.val())) {
item.val("you need to enter a number");
}
});
$(document).on("click","input[name='weightrepbutton']",function () {
var $numsets = $(this).parent().children('[name="numsets"]');
if ($numsets.val() != "you need to enter a number" && $numsets.val() != "Number of Sets") {
var numbersets = parseInt($numsets.val())
repandweight.call(this, numbersets)
$(this).hide();
$numsets.hide();
}
})
});
如果您使用的是jQuery 1.7+版本,请考虑切换到jQuery on而不是live
。
编辑:已将live
更新为on
,因为OP在评论中提到了这一点。