Javascript 事件绑定中的动态变量

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"); 现在,这是我想要做的

在jQuery中绑定动态事件时遇到问题。我想要实现的是让一个事件作用于之前设置的变量。比如我有

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%肯定,我无法指出确切的方法。如果它起作用,它就起作用了!