当前位置:  开发笔记 > 编程语言 > 正文

jQuery/javascript对象传递

如何解决《jQuery/javascript对象传递》经验,为你挑选了1个好方法。

到目前为止,我在javascript中做得不多.我最近开始玩jQuery并且遇到了关于如何在表单上进行编辑的教程.

如果你在函数中对容器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('
' + t + '
').remove(); //Call setClickable setClickable($('#editInPlace')); }

我遇到问题的部分是setClickablesaveChanges函数内部的最后一次调用.如果我对其值进行硬编码$('#editInPlace'),则可以正常工作.但是,如果我将功能签名更改为

function saveChanges(target, obj, cancel)

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

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

调用

setClickable(target);

似乎不起作用,我无法弄清楚为什么.



1> cletus..:

更改:

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

至:

function setClickable(target)
{
    target.click
    (

您传入一个包装集(也称为jQuery对象),然后将其包装在另一个包装集中.以上修复了这一点.另一种方法是:

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

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

你看到我得到了什么?

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有