javascript - jQuery/javascript 对象传递

标签 javascript jquery

到目前为止,我对 javascript 的了解还不多。我最近开始玩 jQuery 并遇到了一个关于如何做的教程 Edit in Place在表格上。

如果您在函数中对容器 div 的 ID 进行硬编码,生成的代码将完美运行,但我在将其泛化为传递给函数的 ID 时遇到了问题。

代码是这样开始的:

$(document).ready(function() {
    setClickable($('#editInPlace'));
});

function setClickable(target)
{
    $(target).click
    (
        function()
        {
            //Do some dom manipulation

            $('.buttonA').click(function() { saveChanges(this, false); });
            $('.buttonB').click(function() { saveChanges(this, true); });
        }
    )

    .mouseover(function() { $(this).addClass("editable"); })
    .mouseout(function() { $(this).removeClass("editable"); });
}; //end of function setClickable

function saveChanges(obj, cancel)
{
    //Handle the save changes code

    //Reset the div
    $(obj).parent().after('<div id="editInPlace">' + t + '</div>').remove();

    //Call setClickable
    setClickable($('#editInPlace'));
}

我遇到问题的部分是在 saveChanges 函数中对 setClickable 的最后一次调用。如果我对 $('#editInPlace') 的值进行硬编码,它就可以正常工作。但是,如果我将函数签名更改为

function saveChanges(target, obj, cancel)

并从 setClickable 方法中传入目标对象:

$('.buttonB').click(function() { saveChanges(target, this, true); });

打电话

setClickable(target);

似乎不起作用,我也不知道为什么。

最佳答案

改变:

function setClickable(target)
{
    $(target).click
    (

到:

function setClickable(target)
{
    target.click
    (

您传入一个包装集(也称为 jQuery 对象),然后将其包装在另一个包装集中。以上解决了这个问题。另一种方法是:

$(document).ready(function() {
    setClickable('editInPlace');
});

function setClickable(id)
{
    $("#" + id).click
    (

你明白我的意思了吗?

关于javascript - jQuery/javascript 对象传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/705473/

相关文章:

jquery - 动态改变CSS中的饱和度

javascript - 如何使用 Ajax 运行外部 PHP 文件并在同一页面中显示结果

javascript - 将数据附加到 &lt;script&gt;

javascript - 如何使用 jquery 调用单个下拉列表到每个元素

javascript - 将空值替换为 JSON OBJECT 中的空值

jQuery 表单插件 - 如何更改 'target'(用于响应)值

JavaScript 包装函数 - 未调用内部函数

javascript - webpack 4 scss loader 不工作 - 为什么?

javascript - 从 JavaScript 中删除的 ClojureScript 模拟是什么?

javascript自定义人性化过滤器