如何进一步解耦此JavaScript代码?

时间:2012-02-14 17:14:52

标签: javascript jquery decoupling

我有一个JavaScript对象。你可以看到这一行:

window.gv.borderiseTDCell(this);

tigthly耦合到窗口(如果gv未初始化,则崩溃)。然而,我真正想要做的是:

//bind the click event
jQuery('.highlightableTDCell').click(function () {

    borderiseTDCell(this);
});

但这不起作用。任何想法我能做什么?这是完整的lisinng(紧耦合):

gridview = function () {

    //bind the click event
    jQuery('.highlightableTDCell').click(function () {

        window.gv.borderiseTDCell(this);
    });

};


//selecting cell
gridview.prototype.selectCell = function (obj) {

       //dostuff to cell

    };

一页...

<table class="EditTable" cellpadding="0" cellspacing="0">     
      <tr>
            <td>
                <div style="">0</div>
            </td>
            <td>
                <div style="">0 akudsfsa fdhsad fiasgdf swae</div>
            </td>
            <td class="highlightableTDCell">
                <div>
                    <input value="0.00"/>
                </div>
            </td>
      </tr>
</table>

2 个答案:

答案 0 :(得分:0)

这可能是因为您在使用this时使用$(this)

borderiseTDCell($(this));

此外,gridview似乎没有定义:

var gridview = function (){}

答案 1 :(得分:0)

不确定为什么您需要一个库来概述表格单元格。如何创建一个名为outlinedCell

的类
.outlinedCell{border:1px solid #f00;}

然后您可以添加,删除或切换此类

//bind the click event
$('.highlightableTDCell').click(function () {
    $(this).addClass('outlinedCell');
    // or // $(this).removeClass('outlinedCell');
    // or // $(this).toggleClass('outlinedCell');
});

现场样本:http://jsfiddle.net/WJp2Z/