Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 需要帮助授权我的jquery插件吗_Javascript_Jquery_Knockout.js - Fatal编程技术网

Javascript 需要帮助授权我的jquery插件吗

Javascript 需要帮助授权我的jquery插件吗,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,我有一个用于省略文本的jquery插件。问题是,现在我需要在一个普通的内容中使用这个插件(使用knockout)。如果页面的所有元素都是通过友好方式加载的,我怎么能在这些元素中使用这个插件呢 我的插件: (function ($){ $.fn.ellipsiText= function(options) { var settings = $.extend({ length : 30, ellipsi : "..." }, opt

我有一个用于省略文本的jquery插件。问题是,现在我需要在一个普通的内容中使用这个插件(使用knockout)。如果页面的所有元素都是通过友好方式加载的,我怎么能在这些元素中使用这个插件呢

我的插件:

(function ($){

    $.fn.ellipsiText= function(options) {

    var settings = $.extend({
        length : 30,
        ellipsi : "..."
        }, options );

return this.each(function() {
    var elem = $(this);
    var txt = elem.text();
    if (txt.length>settings.length) {
         elem.text(txt.substr(0,settings.length - settings.ellipsi.length) + settings.ellipsi );
    }
});

};

您可以将相同的函数转换为敲除自定义绑定

省略号文本绑定:-

ko.bindingHandlers.ellipsiText = {
 init: function (element, valueAccessor, allBindingsAccessor) {
    $el = $(element);
    ko.utils.registerEventHandler(element, "change", function () {
        var observable = valueAccessor();
        observable($el.val());
    });
 },
 update: function (element, valueAccessor, allBindingsAccessor, context) {
    var options = allBindingsAccessor().ellipsiTextOptions || {};
    var settings = $.extend({
        length: 30,
        ellipsi: "..."
    }, options);
    var value = valueAccessor();
    var $element = $(element);
    var txt = value();
    if (txt.length > settings.length) {
        $element.text(txt.substr(0, settings.length - settings.ellipsi.length) + settings.ellipsi);
    }else {
        $element.text(txt);
    }
 }
};

有没有一种方法可以在不改变淘汰赛内容的情况下做到这一点?实际上我对敲除一无所知,但我整个系统中的代码都使用它(我没有制作),如果我只是在脚本标记中添加它,控制台会说“ko”没有定义,所以我做错了。我已经更新了解决方案。在脚本标记下添加此项之前,必须添加knockoutjs库的引用。