日期:2014-05-16  浏览次数:20374 次

如何让jQuery插件中的事件处理函数只在插件内部生效
比如我有个目录树插件,树节点的class="node",有一个事件click处理函数
(function($) {
$.fn.jTree = function(options) {
$(".node_name").click(function(event) {
});
};
})(jQuery);
如果在html页面的其他地方还有class="node"的元素,当我点击的时候,同样会触发这个click事件。

怎样限制能触发这个click事件的元素?只有在我的插件内部的元素click的时候触发,插件外部的元素click的时候不触发这个函数?
------解决方案--------------------
命名的时候加jTree等不常用的前缀呗 这种前缀不可能再用重复的了
------解决方案--------------------
(function($) {
$.fn.jTree = function(options) {
$(".node_name",$(".node")).click(function(event) {//第二个参数是指定范围。
});
};
})(jQuery);

示例:
<div id="div"><span class="a">点这里有反映</span></div>
<span class="a">点这里没反映哦</span>
<script type="text/javascript">
$(function(){
    $(".a",$("#div")).click(function(){
        alert("ok");
    })
})
</script>

------解决方案--------------------
把代码的质量提高。

要么加个父id,   要么自己加个id。