Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.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 - Fatal编程技术网

Javascript 有条件地将jQuery插件函数附加到站点上的元素

Javascript 有条件地将jQuery插件函数附加到站点上的元素,javascript,jquery,Javascript,Jquery,我想将jQuery插件函数附加到我的站点上只存在于一个页面上的元素。目前,我正在使用此条件来防止触发限制器功能,并在没有#广告客户描述时抛出错误 jQuery(document).ready(function($) { var elem = $('#charNum'); if ($('#advertiser_co_desc').length) { $('#advertiser_co_desc').limiter(180, elem); }

我想将jQuery插件函数附加到我的站点上只存在于一个页面上的元素。目前,我正在使用此条件来防止触发
限制器
功能,并在没有
#广告客户描述
时抛出错误

jQuery(document).ready(function($) {
    var elem = $('#charNum');
    if ($('#advertiser_co_desc').length) {
        $('#advertiser_co_desc').limiter(180, elem);        
    }
});
在我的网站
#上,广告客户只在一页上出现

我的解决方案完成了这项工作,但我的疑虑源于这样一个事实:浏览器会获取jQuery插件代码以及上面给出的插件函数调用(它们都在同一个文件中),并且无论用户是否访问过存在
#advertiser__desc
的页面,都会持续评估条件


我使用的方法是最优的,还是有更好的方法只将这个特定的JS附加到存在“广告客户”的页面?当然,我希望避免将脚本与PHP代码添加到同一个文件中。

通过jquery检查元素是否存在的最佳方法是
$(“#advertiser_co_desc”)。您已经使用过的长度
。因此无需更改代码。

或者您可以将插件方法包装为

var _limiter = $.fn.limiter;

$.fn.limiter = function(limit, element) { // provide complete argmuments
    if(this.length) {
        _limiter.call(limit, element);
    }
};

确保在此语句之前加载插件。

这是一个非常有趣的解决方案。