假设我有以下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 - 看起来好像不会触发按钮。
由于
答案 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 强>