Javascript Can";$。扩展({},选项)";使用「;“代表”;JQuery中的功能?
“$.extend({},options)”能否在JQuery中使用“委托”功能?我有这个问题,因为我使用下面的JQuery javascript在jsp页面中显示一个弹出菜单Javascript Can";$。扩展({},选项)";使用「;“代表”;JQuery中的功能?,javascript,jquery,html,css,delegates,Javascript,Jquery,Html,Css,Delegates,“$.extend({},options)”能否在JQuery中使用“委托”功能?我有这个问题,因为我使用下面的JQuery javascript在jsp页面中显示一个弹出菜单 /* jQuery Pop Menu Version: beta Author: Guc. http://www.gucheen.pro Based on jQuery 2.0.3 */ (function ($) { $.fn.popmenu = function (options) { var sett
/*
jQuery Pop Menu
Version: beta
Author: Guc. http://www.gucheen.pro
Based on jQuery 2.0.3
*/
(function ($) {
$.fn.popmenu = function (options) {
var settings = $.extend({
'controller': true,
'width': '300px',
'background': '#34495e',
'focusColor': '#1abc9c',
'borderRadius': '10px',
'top': '50',
'left': '0',
'iconSize': '100px',
'color': '#fff',
'border': '0px'
}, options);
if (settings.controller === true) {
var temp_display = 'none';
} else {
var temp_display = 'block';
}
var tar = $(this);
var tar_body = tar.children('ul');
var tar_list = tar_body.children('li');
var tar_a = tar_list.children('a');
var tar_ctrl = tar.children('.pop_ctrl');
function setIt() {
tar_body.css({
'display': temp_display,
'position': 'absolute',
'margin-top': -settings.top,
'margin-left': -settings.left,
'background': settings.background,
'width': settings.width,
'float': 'left',
'padding': '0',
'border-radius': settings.borderRadius,
'border': settings.border
});
tar_list.css({
'display': 'block',
'color': settings.color,
'float': 'left',
'width': settings.iconSize,
'height': settings.iconSize,
'text-align': 'center',
'border-radius': settings.borderRadius
});
tar_a.css({
'text-decoration': 'none',
'color': settings.color
});
tar_ctrl.hover(function () {
tar_ctrl.css('cursor', 'pointer');
}, function () {
tar_ctrl.css('cursor', 'default')
});
tar_ctrl.click(function (e) {
e.preventDefault();
tar_body.show('fast');
$(document).mouseup(function (e) {
var _con = tar_body;
if (!_con.is(e.target) && _con.has(e.target).length === 0) {
_con.hide();
}
//_con.hide(); some functions you want
});
});
tar_list.hover(function () {
$(this).css({
'background': settings.focusColor,
'cursor': 'pointer'
});
}, function () {
$(this).css({
'background': settings.backgrounds,
'cursor': 'default'
});
});
}
return setIt();
};}(jQuery));
在连接了来自后端Spring MVC控制器的ajax json响应的HTML字符串后,我使用这个popmenu.js在页面上显示一个弹出菜单。因为我重新连接了HTML字符串,所以我必须使用委托函数来显示菜单。
如果我在没有“授权”的情况下使用下面的代码,一切都很好
<script>
$(function(){
/* $('#demo_box').popmenu(); */
$('#ListOrLayout').popmenu(
{
'background':'#fff',
'color':'#000',
'focusColor':'#21a0df',
'borderRadius':'0',
'top': '0',
'left': '0',
'border':'1px solid #211d1d'
}
);
/* $('#demo_box_3').popmenu({'width': '200px',
'background':'#223','focusColor':'#ee5','borderRadius':'10px', 'top':
'70', 'left': '-40', 'color':'#1265fe','border':'3px solid #0035fe'});
*/
})
</script>
$(函数(){
/*$(“#演示框”).popmenu()*/
$(“#列表或布局”).popmenu(
{
“背景”:“fff”,
“颜色”:“000”,
“聚焦颜色”:“21a0df”,
“边界半径”:“0”,
“顶部”:“0”,
“左”:“0”,
“边框”:“1px实心”
}
);
/*$('demo_box_3').popmenu({'width':'200px',
‘背景’:‘223’、‘聚焦颜色’:‘ee5’、‘边界半径’:‘10px’、‘顶部’:
‘70’、‘左’:‘40’、‘颜色’:‘1265fe’、‘边框’:‘3px固体#0035fe’});
*/
})
还有我正在使用的HTML:
<div id="content">
<table border = "1">
<tr>
<td><input type="checkbox" id="maincheck" name="maincheck"/></td>
<td>目录/文件</td>
<td>名称</td>
<td>大小</td>
<td>最后修改时间</td>
<td>
<div id="ListOrLayout"><span class="fa fa-list-ul"></span>
<span class="pop_ctrl"><i class="fa fa-caret-down"></i></span>
<ul>
<li><div>查看格式</div></li>
<li><span>列表
</span> <span><i
class="fa fa-list-ul"></i></span></li>
<li><a href="javascript:getFileLayout();"><span>网格
</span> <span><i
class="fa fa-th"></i></span></a></li>
</ul>
</div>
...
<script src="${pageContext.request.contextPath}/js/jquery.min.js"></script>
<script src="${pageContext.request.contextPath}/js/jquery.popmenu.js">
</script>
目录/文件
名称
大小
最后修改时间
- 查看格式李>
- 列表
...
我现在写的JS如下:
<script src="${pageContext.request.contextPath}/js/jquery.min.js">
jQuery("#content").on("#ListOrLayout", popmenu(
{'background':'#fff',
'color':'#000',
'focusColor':'#21a0df',
'borderRadius':'0',
'top': '0',
'left': '0',
'border':'1px solid #211d1d'}
));
</script>
jQuery(“#内容”)。在(“#列表或布局”上,弹出菜单(
{'background':'fff',
“颜色”:“000”,
“聚焦颜色”:“21a0df”,
“边界半径”:“0”,
“顶部”:“0”,
“左”:“0”,
'边框':'1px实心#211d1d'}
));
但这是不起作用的。我不知道popmenu.js委托给祖先的确切事件。因此,任何建议都将不胜感激
函数needReloadInAsyncLoad()
{
//阿贾克斯异步回发需要重新执行的js函数
//警报(“异步”);
new_element=document.createElement(“脚本”);
新的_元素.setAttribute(“type”,“text/javascript”);
new_element.setAttribute(“src”,“${pageContext.request.contextPath}/js/jquery.min.js”);//在这里引入了jquery.min.js
document.body.appendChild(新的_元素);
new_element=document.createElement(“脚本”);
新的_元素.setAttribute(“type”,“text/javascript”);
new_element.setAttribute(“src”,“${pageContext.request.contextPath}/js/jquery.popmenu.js”);//在这里引入了jquery.popmenu.js
document.body.appendChild(新的_元素);
$(“#列表或布局”).popmenu(
{
“背景”:“fff”,
“颜色”:“000”,
“聚焦颜色”:“21a0df”,
“边界半径”:“0”,
“顶部”:“0”,
“左”:“0”,
“边框”:“1px实心”
}
);
}
这个问题是我自己解决的。由于这主要是因为当ajax通过语句“$(“#content”).html(theHtml);”将新html插入到#content中时,jquery.min.js和jquery.popmenu.js不知道,所以我只调用下面的函数来重新加载jquery js和popmenu js$(“#content”).html(“”)$(#content”).html(theHtml);needReloadInAsyncLoad()。。。needReloadInAsyncLoad()函数应位于元素下方。其代码如下: