Home >Web Front-end >JS Tutorial >jQuery right-click menu contextMenu usage example_jquery

jQuery right-click menu contextMenu usage example_jquery

WBOY
WBOYOriginal
2016-05-16 18:01:321554browse

Below we will design a scenario where the table grid needs to implement right-click, add, delete, and save operations on each row. For grid, I use gridview. I just use the styles provided by Microsoft. The test cases don’t need to be very beautiful. I’m not an artist anymore. Haha, I’m just lazy.

First, the renderings. Some comrades say that only with pictures can the truth be revealed:
jQuery right-click menu contextMenu usage example_jquery
ui code:

Copy the code The code is as follows:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits=" Default2" %>



< ;/title> <br><%-- --%> <br><script src="Script/jquery.js" type="text/javascript"></script> <br>< ;script src="Script/jquery.contextmenu.r2.js" type="text/javascript"></script> <br><style type="text/css"> <br>.SelectedRow <br>{ <br>background: yellow; <br>} <br>.contextMenu <br>{ <br>display: none; <br>} <br></style> <br><script type= "text/javascript"> <br>$(function() { <br>$('#GridView1 tr:gt(0)').contextMenu('menu', <br>{ <br>bindings: <br>{ <br>'add': function(t, target) { <br>alert('Trigger: 't.id' add' " taget by:" $("td:eq(0)", target). text()); <br>}, <br>'delete': function(t, target) { <br>alert('Trigger:' t.id ' delete' " taget by:" $("td:eq (0)", target).text()); <br>$(target).remove(); <br>}, <br>'save': function(t, target) { <br>alert(' Trigger: ' t.id ' Save ' " taget by:" $("td:eq(0)", target).text()); <br>}, <br>'About': function(t, target ) { <br>alert('Code by http://www.cnblogs.com/whitewolf/'); <br>} <br>}, <br>onShowMenu: function(e, menu) { <br>if (parseInt($("td:eq(0)", e.currentTarget).text()) > 10) { <br>$("#save", menu).remove(); <br>} <br>$(e.currentTarget).siblings().removeClass("SelectedRow").end().addClass("SelectedRow"); <br>return menu; <br>} <br>}); <br> }) <br></script> <br></head> <br><body> <br><form id="form1" runat="server"> <br><div> <br><div class="contextMenu" id="menu"> <br><ul> <br><li id="add"> <br><img src="image/Home_Age_UnSelect .jpg" width="16" height="16" /> <br>edit</li> <br><li id="delete"> <br><img src="image/Home_Age_UnSelect .jpg" width="16" height="16" /> <br>Delete</li> <br><li id="save"> <br><img src="image/Home_Age_UnSelect .jpg" width="16" height="16" /> <br>Save</li> <br><li id="About"> <br><img src="image/Home_Age_UnSelect .jpg" width="16" height="16" /> <br>About</li> <br></ul> <br></div> <br><asp:GridView ID ="GridView1" runat="server" Width="100%" BackColor="White" BorderColor="#CCCCCC" <BR>BorderStyle="None" BorderWidth="1px" CellPadding="3"> <br>< ;RowStyle ForeColor="#000066" /> <br><FooterStyle BackColor="White" ForeColor="#000066" /> <br><PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign= "Left" /> <br><SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" /> <br><HeaderStyle BackColor="#006699" Font-Bold=" True" ForeColor="White" /> <br></asp:GridView> <br></div> <br></form> <br></body> <br></ html> <br> </div> <br>Note: <br>1: contextMenu we hide some menu items based on data records. This can be done in the onShowMenu event, based on the <br>e.currentTarget trigger source to obtain data, based on remove menu item. For example, in the test case: if id>10, saving is not allowed <br>if (parseInt($("td:eq(0)", e.currentTarget).text()) > 10) { <br>$ ("#save", menu).remove(); <br>} <br>2: Event registration: Get data according to the second parameter target, and get the menu item according to the first parameter t. For example: <br><div class="codetitle"> <span><a style="CURSOR: pointer" data="84374" class="copybut" id="copybut84374" onclick="doCopy('code84374')"><u>Copy code </u></a></span> The code is as follows: </div> <div class="codebody" id="code84374"> <br>'add': function(t, target) { <br>alert('Trigger: ' t.id ' increase ' " taget by:" $("td:eq(0)", target).text()); <br>}, <br> </div> <br>Ajax and server-side communication are needed here. You can use the component from my previous article: jQuery Ajax imitates the AjaxPro.Utility.RegisterTypeForAjax auxiliary method, which will make it easier to apply ajax communication. <br>There is a problem here in the source code I downloaded: <br>Originally, the currentTarget here is always undefined. <br><div class="codetitle"> <span><a style="CURSOR: pointer" data="62347" class="copybut" id="copybut62347" onclick="doCopy('code62347')"><u>Copy code </u></a></span> The code is as follows: </div> <div class="codebody" id="code62347"> <br>if (!!cur.onShowMenu) menu = cur. onShowMenu(e, menu); <br>$.each(cur.bindings, function(id, func) { <br>$('#' id, menu).bind('click', function(e) { <br>hide(); <br>func(trigger, currentTarget); <br>}); <br>}); <br> </div> <br>After I modified: <br><div class="codetitle"> <span> <a style="CURSOR: pointer" data="1868" class="copybut" id="copybut1868" onclick="doCopy('code1868')"><u>Copy code</u></a></span> The code is as follows:</div> <div class="codebody" id="code1868"> <br>if (!!cur.onShowMenu) menu = cur.onShowMenu(e, menu); <br>$.each(cur.bindings, function(id, func) { <br>$('#' id, menu).bind('click', function(ev) { <br>hide(); <br> func(trigger, e.currentTarget); <br>}); <br>}); <br> </div> <br>This way everything is normal. <br>There is very little content, everything is interrupted and ends here, over! <br>Attachment download: <a href="http://xiazai.jb51.net/201109/yuanma/contextMenu_jquery.rar" target="_blank">Demo</a></div><div class="nphpQianMsg"><div class="clear"></div></div><div class="nphpQianSheng"><span>Statement:</span><div>The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn</div></div></div><div class="nphpSytBox"><span>Previous article:<a class="dBlack" title="jQuery EasyUI API Chinese Documentation - Panel panel_jquery" href="https://m.php.cn/faq/19636.html">jQuery EasyUI API Chinese Documentation - Panel panel_jquery</a></span><span>Next article:<a class="dBlack" title="jQuery EasyUI API Chinese Documentation - Panel panel_jquery" href="https://m.php.cn/faq/19638.html">jQuery EasyUI API Chinese Documentation - Panel panel_jquery</a></span></div><div class="nphpSytBox2"><div class="nphpZbktTitle"><h2>Related articles</h2><em><a href="https://m.php.cn/article.html" class="bBlack"><i>See more</i><b></b></a></em><div class="clear"></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="fluid" data-ad-layout-key="-6t+ed+2i-1n-4w" data-ad-client="ca-pub-5902227090019525" data-ad-slot="8966999616"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><ul class="nphpXgwzList"><li><b></b><a href="https://m.php.cn/faq/1609.html" title="An in-depth analysis of the Bootstrap list group component" class="aBlack">An in-depth analysis of the Bootstrap list group component</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/faq/1640.html" title="Detailed explanation of JavaScript function currying" class="aBlack">Detailed explanation of JavaScript function currying</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/faq/1949.html" title="Complete example of JS password generation and strength detection (with demo source code download)" class="aBlack">Complete example of JS password generation and strength detection (with demo source code download)</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/faq/2248.html" title="Angularjs integrates WeChat UI (weui)" class="aBlack">Angularjs integrates WeChat UI (weui)</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/faq/2351.html" title="How to quickly switch between Traditional Chinese and Simplified Chinese with JavaScript and the trick for websites to support switching between Simplified and Traditional Chinese_javascript skills" class="aBlack">How to quickly switch between Traditional Chinese and Simplified Chinese with JavaScript and the trick for websites to support switching between Simplified and Traditional Chinese_javascript skills</a><div class="clear"></div></li></ul></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5902227090019525" data-ad-slot="5027754603"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><footer><div class="footer"><div class="footertop"><img src="/static/imghwm/logo.png" alt=""><p>Public welfare online PHP training,Help PHP learners grow quickly!</p></div><div class="footermid"><a href="https://m.php.cn/about/us.html">About us</a><a href="https://m.php.cn/about/disclaimer.html">Disclaimer</a><a href="https://m.php.cn/update/article_0_1.html">Sitemap</a></div><div class="footerbottom"><p> © php.cn All rights reserved </p></div></div></footer><script>isLogin = 0;</script><script type="text/javascript" src="/static/layui/layui.js"></script><script type="text/javascript" src="/static/js/global.js?4.9.47"></script></div><script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script><link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css' type='text/css' media='all'/><script type='text/javascript' src='/static/js/viewer.min.js?1'></script><script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script><script>jQuery.fn.wait = function (func, times, interval) { var _times = times || -1, //100次 _interval = interval || 20, //20毫秒每次 _self = this, _selector = this.selector, //选择器 _iIntervalID; //定时器id if( this.length ){ //如果已经获取到了,就直接执行函数 func && func.call(this); } else { _iIntervalID = setInterval(function() { if(!_times) { //是0就退出 clearInterval(_iIntervalID); } _times <= 0 || _times--; //如果是正数就 -- _self = $(_selector); //再次选择 if( _self.length ) { //判断是否取到 func && func.call(_self); clearInterval(_iIntervalID); } }, _interval); } return this; } $("table.syntaxhighlighter").wait(function() { $('table.syntaxhighlighter').append("<p class='cnblogs_code_footer'><span class='cnblogs_code_footer_icon'></span></p>"); }); $(document).on("click", ".cnblogs_code_footer",function(){ $(this).parents('table.syntaxhighlighter').css('display','inline-table');$(this).hide(); }); $('.nphpQianCont').viewer({navbar:true,title:false,toolbar:false,movable:false,viewed:function(){$('img').click(function(){$('.viewer-close').trigger('click');});}}); </script></body><!-- Matomo --><script> var _paq = window._paq = window._paq || []; /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u="https://tongji.php.cn/"; _paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['setSiteId', '9']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); })(); </script><!-- End Matomo Code --></html>