我遇到了在jQuery中绑定动态事件的问题。我想要实现的是让事件作用于先前已设置的变量。例如,我有
someFunc = function (form_id)
{
$("input").bind("focus", function ()
{
$("#"+form_id).css({"border":"1px solid red"});
});
}
someFunc("edit_form");
somefunc("add_form");
现在这是我想要做的一个大的简化,但是绑定时变量的动态特性是我需要的。这里的问题是,基本上我希望jQuery在应用绑定时的“form_id”上执行,而是在触发焦点时执行“form_id”时执行。
我理解为什么会发生这种情况,我的问题是我如何才能实现我正在寻找的功能。 (这里再次形成只是一个例子,而不是实际的功能)。
修改1:
这可能是我想要实现的更好的例子:
Dog.prototype = {
name: "Dog",
bind_function : function ()
{
name = this.name;
$(name+"_edit_form input[name='something']").bind("focus", function ()
{
console.log(name);
})
}
}
function Dog() {
this.breed = "Chihuaha";
}
Rover = new Dog();
Rover.bind_function();
Fido = new Dog();
Fido.bind_function();
现在我希望专注于生成特定狗名称的控制台日志,但是目前它只会控制日志中最后一只狗的名字?
答案 0 :(得分:1)
我一直在寻找eventData来在绑定时传递变量而不是执行。关于bind()的jQuery文档页面大约一半:
答案 1 :(得分:0)
我认为这就是你所追求的目标?
$("form").each(function() {
var id = $(this).attr("id");
$("input", $(this)).bind("focus", function ()
{
var border = "";
switch (id) {
case "edit_form":
border = "1px solid red";
break;
case "add_form":
border = "1px solid blue";
break;
}
$(this).css( { border: border });
});
});
虽然没有使用你的功能,但它会根据聚焦的元素表单ID分配不同的CSS。