Javascript 事件绑定中的动态变量
在jQuery中绑定动态事件时遇到问题。我想要实现的是让一个事件作用于之前设置的变量。比如我有Javascript 事件绑定中的动态变量,javascript,jquery,Javascript,Jquery,在jQuery中绑定动态事件时遇到问题。我想要实现的是让一个事件作用于之前设置的变量。比如我有 someFunc = function (form_id) { $("input").bind("focus", function () { $("#"+form_id).css({"border":"1px solid red"}); }); } someFunc("edit_form"); somefunc("add_form"); 现在,这是我想要做的
someFunc = function (form_id)
{
$("input").bind("focus", function ()
{
$("#"+form_id).css({"border":"1px solid red"});
});
}
someFunc("edit_form");
somefunc("add_form");
现在,这是我想要做的一个大的简化,但是绑定时变量的动态特性是我所需要的。这里的问题是,本质上,我希望jQuery在应用绑定时在任何“form\u id”上执行,但在触发焦点时,它将在任何“form\u 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();
现在我想focus生成一个特定狗名的控制台日志,但目前它只会控制台日志最后一只狗的名字?我想这就是你想要的
$("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
.我想这就是你想要的
$("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
.我在寻找eventData,以便在绑定时而不是执行时传递变量。bind()的jQuery文档页面大约在中间位置:
我在寻找eventData,以便在绑定时而不是执行时传递变量。bind()的jQuery文档页面大约在中间位置:
谢谢,但我不认为这是我想要的,编辑后添加更好(希望更清晰)的示例谢谢,但我不认为这是我想要的,编辑后添加更好(希望更清晰)的示例您的第二个示例更令人困惑。为什么是这个品种?另外,您总是选择
$('Dog\u edit\u form input[..
)这似乎是错误的。很抱歉,这是一件特别难说出的事情,但还是找到了答案。现在发布。您的第二个示例更让人困惑。为什么这个。繁殖
?您总是选择$('Dog\u edit\u form input[…
这似乎是错误的。很抱歉,这是一件特别难说出的事情,不管怎样,还是找到了答案。现在发布。在您的第一个示例中,它应该可以正确工作,并且确实可以:(它分别作用于两个元素,而不是您解释的最后使用的元素)--我很高兴你找到了答案,尽管我怀疑你的用法并不是做你所做事情的最佳方式。干杯,我今天学到的另一个新东西——你对这一点的理解可能有点错误,但我自己也不是100%确定,我无法指出确切的答案。如果它起作用,它就起作用了!在你的第一个例子中,它应该起到正确的作用,并且它是正确的oes:(它分别作用于两个元素,而不是您所解释的最后一个使用的元素)--我很高兴你找到了答案,尽管我怀疑你的用法并不是做你所做事情的最佳方式。干杯,我今天学到的另一个新东西——你对这一点的理解可能有点错误,但我自己也不是100%肯定,我无法指出确切的方法。如果它起作用,它就起作用了!