在使用jquery的时候碰到的问题,以及跨域的问题

1.Jquery在使用$(dom)注意的问题
最近在忙两个菜单,今天终于忙下来了,同时也发现了一两个小的问题。
在使用webui的时候获取复选框选中的值,我的想法很简单就是获取复选框所在div的节点然后循环遍历复选框dom,最后根据hasClass判断是否复选框是否勾选则只需要判断是否有ckecked就行。但是在遍历判断的时候就发现了一个问题,我第一次写的时候,是这么写的。

var fixInfo = $("#fixinfo");
            var allSpan = fixInfo.find(".ui-select-item");
            for(var i=0;i<allSpan.length;i++){
                var dom = allSpan[i]; 
                if(dom.hasClass('checked')){
                    var childNode = dom.childNodes[1];
                    var info={
                            "extAttrCode":childNode.attr('value'),
                            "extAttrValue":"1"
                    };
                    seleted.push(info);
                }else{
                    var childNode = dom.childNodes[1];
                    var info={
                            "extAttrCode":childNode.attr('value'),
                            "extAttrValue":"0"
                    };
                    seleted.push(info);
                }
            }

在使用的时候一直在报错dom.hasClass(‘checked’)没有这个方法,我一直思前想后这个不是jquery的用法吗,然后我想起来了以前貌似也碰到这个问题,然后组里前端牛人告诉我在这样使用的时候需要加上jquery的头就是$(dom).hasClass(‘checked’),然后我就想查了下,然后自己归纳下,不一定是正确的,就是通过jquery获得的dom节点相当于是返回了一个对象你,但是你不能直接对这个对象直接进行jquery操作需要通过对这个对象进行jquery的选取才能够使用jquery的方法,如同下面这种。

var fixInfo = $("#fixinfo");
            var allSpan = fixInfo.find(".ui-select-item");
            for(var i=0;i<allSpan.length;i++){
                var dom = allSpan[i]; 
                if($(dom).hasClass('checked')){
                    var childNode = dom.childNodes[1];
                    var info={
                            "extAttrCode":$(childNode).attr('value'),
                            "extAttrValue":"1"
                    };
                    seleted.push(info);
                }else{
                    var childNode = dom.childNodes[1];
                    var info={
                            "extAttrCode":$(childNode).attr('value'),
                            "extAttrValue":"0"
                    };
                    seleted.push(info);
                }
            }

2.就是跨域的问题,因为在菜单开发的时候发现需要重新的调用另外一个菜单,但是值的传入传出都是一个问题,还好已经有前人解决了这个方法,我就拿过来用下。
传入调用的方法

var windObj = {
                        scroll:"yes",
                        url: path,
                        height:'500px',
                        param: {
                            "billId":$("#billId").val(),
                            "opRegionId":sessionCache.opRegionId,
                            "cooperatorType":json.cache.baseAddrInfo.cooperatorType,
                            "cooperatorName":json.cache.baseAddrInfo.cooperatorName,
                            "connect_type":json.cache.baseAddrInfo.connect_list[0].connect_type,
                            "connect_name":json.cache.baseAddrInfo.connect_list[0].connect_name,
                            "countyId":json.cache.baseAddrInfo.area_id
                        },
                        callback:function(retVal){
                            if(typeof(retVal)!="undefined"){
                                var data = jQuery.parseJSON(retVal);
                                cache.broadOpenData = data;
                                $('.dialog-broadband-id .ui-input').val(cache.broadOpenData.broadInfo.broadAcct);
                                obj.isOldAcct=false;
                                broadFlag="1";
                            }
                        }
                    };
                    util.showModalDialog(windObj);

在windObj 中拼入url表示开启的页面 para表示传到新开的页面的如入参,通过callback的回调函数能够获取到新开页面返回的参数

showModalDialog: function(obj) {
            var scroll = obj.scroll || "yes",
                resizable = obj.resizable || "no",
                help = obj.help || "no",
                status = obj.status || "no",
                edge = obj.edge || "sunken",
                dialogHeight = obj.height || "500px",
                dialogWidth = obj.width || "810px",
                broswerWidth = window.screen.availWidth,
                broswerHeight = window.screen.availHeight,
                dialogHeightNum = parseInt(dialogHeight.replace("px", ""));
                dialogWidthNum = parseInt(dialogWidth.replace("px", ""));
                dialogLeft = (broswerWidth - dialogWidthNum) / 2 ,
                dialogTop = (broswerHeight - dialogHeightNum) / 2 ;
            var retVal = window.showModalDialog(obj.url,obj.param,"dialogTop:"+dialogTop+";dialogLeft:"+dialogLeft+";scroll:"+scroll+";resizable:"+resizable+";help:"+help+";status:"+status+";edge:"+edge+";dialogHeight:"+dialogHeight+";dialogWidth:"+dialogWidth);
            if(obj.callback) {
                obj.callback(retVal);
            }
        }

通过util中的代码可以看出还是通过浏览器自带的事件将值返回,因为开发的菜单的使用人群都是用ie的所以这个方法在chrome中并不能实现,因为chrome不支持window.showModalDialog

同时在新建的页面也要也对应的返回参数

    var str = JSON.stringify(params);
                        window.returnValue=str; 
                        window.close();
发布了51 篇原创文章 · 获赞 7 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq_28042463/article/details/52680519
今日推荐