JS-Jquery 常用功能

  • Post author:
  • Post category:其他


js 开启新窗口

$(function() {
        $("#btn").click(function() {
            var a = $("<a href='http://www.xxxx.com' target='_blank'>Apple</a>").get(0);
            
            var e = document.createEvent('MouseEvents');
 
            e.initEvent('click', true, true);
            a.dispatchEvent(e);
            #console.log('event has been changed');
        });
    });

js 确认删除原生弹框

if (confirm("是否确认删除")) {
				console.log(1111)
			}else{
				console.log(2222)
			}

js 或者jq 获取页面元素失效

举个例子,在页面上看到了ul  里面有三个li  在页面加载完成以后 就$(‘ul’).find(‘li’) 怎么也获取不到元素,

后来想到,有可能li 也是动态加载的,页面原有的js 还没把li 加载好,我就去获取了,肯定获取不到,然后我就

setTimeout(function(){

$(‘ul’).find(‘li’);

},3000);

加了一个延时,结果就能正常获取了。第一次遇到这种情况,踩坑踩了一个多小时
微笑
微笑

jq 控制checkbox 切换选中状态失效

$(".chooseall").click(function(){
    if($(".chooseall").prop("checked") == true){
        $("input[name='checkbox1']").prop("checked", false);
        console.log(1);
    }else{
        $("input[name='checkbox1']").prop("checked", true);
        console.log(2);
    }
});

jquery 1.6以上 prop 和attr 的操作对象不同,attr是操作html节点  prop操作的是js获取的DOM对象

详情参考:

脚本之家

jq当前元素的点击事件

<input onclick=shoucang(this) value='666'>

function shoucang(data){

console.log( $(data).val() );

}

ajax 上传图片

$('#receiptimg').change(function(event) {
	var formData = new FormData();
	var id =$('#id').val();
    	formData.append("file", $(this).get(0).files[0]); 
        //文件 因为我是点击按钮选择了文件就自动上传 所以是this 如果是点击按钮提交就看下面的
    	
        formData.append("id", id); //额外参数
    	 $.ajax({
                  url:yourUrl,
	          type:'POST',
	          data:formData,
	          cache: false,
	          contentType: false, //必须要有   
	          processData: false, //必须要有   
	          success:function(data){
	              //code
	          },
	          error:function(data){
	            //code
	           }
	             
	      });
	});



//下面是百度的一段代码

<p>姓名<input type="text" name="username"></p>
<p>头像<input type="file" id="upload"></p>
<p><button class="btnnn">提交</button><span class="tishi"></span></p>

$(".btnnn").click(function () {
        var formData=new FormData();
        formData.append("username",$(":text").val());
        formData.append("file",$("#upload")[0].files[0]);  //这里就是点击按钮 所以是根据按钮的id找  
        $.ajax({
            url:"xxxx",
            type:"POST",
            data:formData,
            contentType:false,
            processData:false,
            success:function (data) {
              //code
            }

        })
    })


2018-4-26

新增、删除属性

$("#id").addClass('classname')

$("#id").removeClass('classname')

获取值,得到值,修改值,清空值

$("#input").val()

获取img标签的src  并且赋值

获取:$("#code_img").attr('src'); 或者 $("#code_img").prop('src');

var newsrc = $("#code_img").attr('src')+'?time='+Math.random()

赋值: $("#code_img").attr('src','xxxxxxxxxx');  或者 $("#code_img").prop('src','xxxxxxxx');

判断多选框是否被选中:

if($('input[type="checkbox"]').prop("checked")==true){
     //do something
  }

获取自定义属性

$('#code').getAttribute('mylink')

事件

.click,onclick()

click 与onclick的区别:

$(function(){
$("#btn3").click(function(){
alert("second");
});
});

function change(){
alert("first");
} 


然后点击:

<button id=”btn3″οnclick=”change()”>dd</button>

先弹出first,然后再弹出second

数据转化成对象

json_encode的数据到模板里用js先 eval()转换成对象

ajax获取的html字符串,用$(data)即可转化成对象  $(data).html 即可获取data里面的html内容

ajax局部刷新页面js失效

比如按钮的click事件,绑定事件用 on    因为局部刷新以后事件要重新绑定,用on 即可  具体的参数请自行百度

$('#id').on('click', function() {      
   	// function code		
});

Jq追加了一个按钮,需要绑定点击事件,这个时候用on来绑定,但是要先选择父级

//先往div里追加一个button id='button'
//绑定点击事件
$('#div').on('click','#button',function(){
//这里需要先选择 button的父级 然给button绑定
})

$('#button').on('click',function(){
//如果这样直接绑定,经常是无效的,不知道为什么 = =
})

2018年5月28日16:15:54

JS序列化表单 中文乱码

var form = $('#add_menu_form').serialize(); // 表单里有中文 serialize()自动调用了encodeURIComponent方法将数据编码了
 var data = decodeURIComponent(form,true); // 解码中文
  console.log(data);

php接收到数据后  直接 parse_str()处理一下就好

2018年6月4日

遍历

$('#id').each(function(){

alert($(this).text())

})  //进行DOM遍历,比如遍历一个ul 显示里面的li的文本内容

$.each(data,function(key,val){

alert(val.属性名)

})

//遍历数据,比如json对象,应该alert(val.属性名)

给单选按钮追加选中

if (if_show) {
$("input:radio[name='if_show']").eq(0).attr("checked",'checked');
}else{
$("input:radio[name='if_show']").eq(1).attr("checked",'checked');
}

定时器

//定时器,2秒钟后触发按钮的点击事件
setTimeout(function (){
$('#button').click();
$('#showmessage').trigger("click");
},2000);

给select 下拉列表追加默认选中

$("select[name='xxx']").find("option[value='"+pid+"']").attr("selected",true);//pid 是变量,这里拼接一下
$("#id").find("option[text='xxx']").prop("selected",true);//attr 也可以

var options=$(“#id option:selected”); //获取选中的项这个对象

alert(options.val()); //拿到选中项的值

alert(options.text()); //拿到选中项的文本

js调用函数的返回值取不到的问题:

简单的例子:

function check_name(){
	var ck_res=false; //定义一个变量
	$.ajax({
	type:'get',
	async:false,
	success:function(msg){
	if(msg){ 
	ck_res = true;   //更改变量值
	}else{
	ck_res = false; //更改变量值
	}
	}
	});
	return ck_res; //返回变量值
	}

var res = check_name() 这个时候res的值就是 函数的返回值

function check_name(){
	
	$.ajax({
	 type:'get',
	 async:false,
	 success:function(msg){
	  if(msg){ 
	  return true;
	  }else{
	  return false;
	  }
	 }
	});
	}
var res = check_name() 这个时候 res就是未定义  

因为是ajax返回了以后并没有变量接收,返回值只是存在于check_name函数内部,如果 var ajax_return=$.ajax({……}) 这样 ajax_return就是一个对象,然后在check_name()里再把这个对象return,最后res有值,不过也是个对象,里面的responseText是文本内容,不推荐这种写法,只是说明为什么在ajax里直接return 然后再调用函数却接收不到值 。

第一种在方法里先声明变量,在ajax里改变以后,在方法里再return 变量 这种才是常规的写法。

Jquery判断元素是否隐藏

if($("#test").is(":hidden")){
       $("#test").show();    //如果元素为隐藏,则将它显现
}else{
      $("#test").hide();     //如果元素为显现,则将其隐藏
}

有用的话点个赞,谢谢



版权声明:本文为benpaodelulu_guajian原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。