我可以检测是否在按钮上调用.text()?

时间:2012-02-24 21:01:48

标签: jquery

假设我有以下html:

<button class="inforTextButton" id"myButton">
   <span class="leftSlice"></span>
   <span class="centerSlice">Approved</span>
   <span class="rightSlice"></span>
</button>

如果我在jQuery中调用以下命令:

$("#myButton").text("New Text");

它将用文本替换所有跨度。

有没有检测到这个事件?我当时想做的是阻止它替换所有内容,而是改变centerSlice。

现在我知道我可以致电:$("#myButton").find(".centerSlice").text("New Text")但这不是我问题的真正含义。如果将来我的按钮实现发生变化,我试图看看这是否有可能以某种方式检测我错过了什么..

我尝试过textchange - 看起来好像不会触发按钮。

由于

2 个答案:

答案 0 :(得分:2)

文本函数存储在$.fn.text中,这意味着您可以做的是替换该函数:

var oldTextFunc = $.fn.text;
$.fn.text = function newTextFunc(text) { 
    /* jQuery function to change the centerSlice text */ 
};

如果你想恢复jQuery文本功能:

$.fn.text = oldTextFunc;

答案 1 :(得分:1)

这听起来像.sub()的完美使用,这将允许您创建jQuery的副本并覆盖.text()的默认行为

var myjQuery = jQuery.sub();

myjQuery.fn.text = function() {

    if (this.is("button")) {
        alert("do something special with button");
    }
    else {
        return jQuery.fn.text.apply(this, arguments);
    }
};
myjQuery("#myButton").text("New Text");​

<强> Example on jsfiddle