jQuery笔记-api


jQuery1.10笔记

(*号是需要注意的部分)


核心

// jQuery([selector,[context]])
$("div", xml.responseXML);
$("input:radio", document.forms[0]);

//返回值:jQuery    jQuery(html,[ownerDocument])
$("<input>", {
    type: "text",
    val: "Test",
    focusin: function() {
        $(this).addClass('active');
    },
    focusout: function() {
        $(this).toggleClass('type');
    }
}).appendTo('form');

// jQuery(callback)
$(function() {
    // body...
});

//返回值:Boolean   jQuery.holdReady(hold) 
$.holdReady(true);
$.getScript("myplugin.js", function() {
    $.holdReady(false);
});

// 返回值:jQuery   each(callback)
$('img').each(function(i) {
    this.src = "test" + i + ".jpg"
});

//返回值:Number        size()
$('img').size();

//返回值:Number        length
$('img').length();

//返回值:Striing   selector
$('ul').append('<li>' + $('ul').selector + '<li>');

// 返回值:Element  context
$('ul', document.body).context.nodeName;

// 返回值:Element  get([index])
$('img').get().reverse();

//返回值:Number        index([selector|element])
$('li').index($('li:gt(0)'));

// 返回值:jQuery   data([key],[value])
*能在一个元素上存放任何格式的数据,而不仅仅是字符串。*
$('div').data('blah', {
    first: 16,
    last: 'pizza'
});

// 返回值:jQuery   removeData([name|list])
$('div').removeData('blah');

//返回值:Array/jQuery  queue(element,[queueName,[callback]])
//返回值:jQuery        dequeue([queueName])
// 返回值:jQuery       clearQueue([queueName])

//返回值:jQuery    jQuery.fn.extend(object)
jQuery.fn.$.extend({
    check: function() {
        return this.each(function() {
            this.checked = true;
        });
    }
});
$('input[type=checkbox]').check();

//返回值:jQuery    jQuery.extend(object)
jQuery.extend({
    min: function(a, b) {
        return a < b ? a : b;
    },
    max: function(a, b) {
        return a > b ? a : b;
    }
});

//返回值:jQuery    jQuery.noConflict([extreme])
*运行这个函数将变量$的控制权让渡给第一个实现它的那个库。*

选择器

// 返回值:Array<Element>   #id
$('#myDiv');
// 返回值:Array<Element(s)>    element
$('div');
// 返回值:Array<Element(s)>    .class
$(".myClass");
// 返回值:Array<Element(s)>    *
$("*");
// 返回值:Array<Element(s)>    selector1,selector2,selectorN
$("div,span,p.myClass");
// 返回值:Array<Element(s)>    ancestor descendant
$("form input");
// 返回值:Array<Element(s)>    parent > child
$("form > input");
// 返回值:Array<Element(s)>    prev + next
$("label + input");
// 返回值:Array<Element(s)>    prev ~ siblings
$("label ~ input");
// 返回值:jQuery           :first
$("li:first");
// 返回值:Array<Element(s)>    :not(selector)
$("input:not(:checked)");
// 返回值:Array<Element(s)>    :even
$("tr:even");
// 返回值:Array<Element(s)>    :odd
$("tr:odd");
// 返回值:Array<Element>   :eq(index)
$("tr:eq(1)");
// 返回值:Array<Element(s)>    :gt(index)
$("tr:gt(0)");
// 返回值:jQuery           :lang(language)
$("p:lang(it)");
// 返回值:jQuery           :last()
$('li:last');
// 返回值:Array<Element(s)>    :lt(index)
$("tr:lt(2)");
// 返回值:Array<Element(s)>    :header
$(":header").css("background", "#EEE");
// 返回值:Array<Element(s)>    :animated
$("div:not(:animate)").animate({
    left: "+=20"
}, 1000);
// 返回值:jQuery           :focus
$("a").focus();
// 返回值:jQuery           :root
$(":root").css("background-color", "yellow");
// 返回值:jQuery           :target
// 返回值:Array<Element(s)>    :contains(text)
$("div:contains('Jhon')");
// 返回值:Array<Element(s)>    :empty
$("td:empty");
// 返回值:Array<Element(s)>    :has(selector)
$("div:has(p)").addClass("test");
// 返回值:Array<Element(s)>    :parent
$("td:parent");
// 返回值:Array<Element(s)>    :hidden
$("tr:hidden");
// 返回值:Array<Element(s)>    :visible
$("tr:visible");
// 返回值:Array<Element(s)>    [attribute]
// 返回值:Array<Element(s)>    [attribute!=value]
// 返回值:Array<Element(s)>    [attribute=value]
$("input[name='newsletter']").attr("checked", true);
// 返回值:Array<Element(s)>    [attribute^=value]
$("input[name^='news']");
// 返回值:Array<Element(s)>    [attribute$=value]
$("input[name$='er']");
// 返回值:Array<Element(s)>    [attribute*=value]
$("input[name*='man']");
// 返回值:Array<Element(s)>    [selector1][selector2][selectorN]
$("input[id][name$='man']");
// 返回值:Array<Element(s)>    :first-child
$("ul li:first-child");
// 返回值:jQuery           :first-of-type
$("div:fist-of-type");
// 返回值:Array<Element(s)>    :last-child
$("ul li:last-child");
// 返回值:jQuery           :last-of-type
$("p:last-of-type");
// 返回值:jQuery           :nth-last-child(n|even|odd|formula)
// 返回值:Array<Element(s)>    :nth-child
*':eq(index)' 只匹配一个元素,而这个将为每一个父元素匹配子元素。*
* :nth-child从1开始的,而:eq()是从0算起的!*
$("ul li:nth-child(2n)");
// 返回值:jQuery           :nth-last-of-type
// 返回值:jQuery           :nth-of-type(n|even|odd|formula)
// 返回值:Array<Element(s)>    :only-child
$("ul li:only-child");
//返回值:Array<Element(s)>     :only-of-type
$("button:only-of-type").text("Alone").css("border", "2px blue solid");
// 返回值:Array<Element(s)>    :input
*匹配所有 input, textarea, select 和 button 元素*
$(":input");
// 返回值:Array<Element(s)>    :text
$(":text");
// 返回值:Array<Element(s)>    :password
$(":password")
    // 返回值:Array<Element(s)>    :radio
    // 返回值:Array<Element(s)>    :checkbox
    // 返回值:Array<Element(s)>    :submit
    // 返回值:Array<Element(s)>    :image
    // 返回值:Array<Element(s)>    :reset
    // 返回值:Array<Element(s)>    :button
    // 返回值:Array<Element(s)>    :file
    // 返回值:Array<Element(s)>    :checked
    // 返回值:Array<Element(s)>    :selected
    // 返回值:Array<Element(s)>    :disabled
    // 返回值:Array<Element(s)>    :enabled
$("input:enabled");
// 返回值:Array<Element(s)>    :has(selector)

文档处理

// 返回值:jQuery   append(content|fn)
// 返回值:jQuery   appendTo(content)
// 返回值:jQuery   prepend(content)
// 返回值:jQuery   prependTo(content)
// 返回值:jQuery   after(content|fn)
// 返回值:jQuery   before(content|fn)
// 返回值:jQuery   insertAfter(content)
// 返回值:jQuery   insertBefore(content)
// 返回值:jQuery   wrapAll(html|ele)
// 将所有包裹起来
// 返回值:jQuery   wrap(html|element|fn)
// 将每一个包裹起来
*当HTML标记代码中的元素包含文本时无法使用这个函数。因此,如果要添加文本应该在包裹完成之后再行添加*
$('.inner').wrap(function() {
    return '<div class="' + $(this).text() + '"/>';
});
// 返回值:jQuery   unwrap()
// 返回值:jQuery   wrapInner(htm|element|fnl)
// 返回值:jQuery   replaceWith(content|fn)
*是移动到目标位置来替换,而不是复制一份来替换*
// 返回值:jQuery   replaceAll(selector)
// 返回值:jQuery   empty()
// 返回值:jQuery   remove([expr])
// 返回值:jQuery   detach([expr])
*与remove()不同的是,所有绑定的事件、附加的数据等都会保留下来。*
$("p").detach(".hello");
// 返回值:jQuery   clone([Even[,deepEven]])

事件

// 返回值:jQuery   ready(fn)
// 返回值:jQuery   on(events,[selector],[data],fn)
$('p').on("click", function() {
    alert($(this).text());
});
// 返回值:jQuery   off(events,[selector],[fn])
$('p').off();
$('p').off("click");
// 返回值:jQuery   bind(type,[data],fn)
*.bind()函数只能针对已经存在的元素进行事件的设置;但是live(),on(),delegate()均支持未来新添加元素的事件设置*
$("button").bind({
    click: function() {
        $("p").slideToggle();
    },
    mouseover: function() {
        $("body").css("background-color", "red");
    },
    mouseout: function() {
        $("body").css('background-color', '#FFF');
    }
});
// 返回值:jQuery   one(type,[data],fn)
$("p").one("click", function() {
    alert($(this).text());
});
// 返回值:jQuery   trigger(type,[data])
$("p").click(function(event, a, b) {
    *一个普通的点击事件时,a和b是undefined类型*
    *如果用下面的语句触发,a指向"foo",而b指向"bar"*
}).trigger('click', ["foo", "bar"]);
$("p").bind('myEvent', function(event, message1, message2) {
    alert(message1 + ' ' + message2);
});
$("p").trigger("myEvent", ["Hello", "World"]);
// 返回值:jQuery   triggerHandler(type, [data])
*与trigger类似,但有以下三个主要区别: *
 第一,他不会触发浏览器默认事件。
 第二,只触发jQuery对象集合中第一个元素的事件处理函数。
 第三,这个方法的返回的是事件处理函数的返回值,而不是据有可链性的jQuery对象。此外,如果最开始的jQuery对象集合为空,则这个方法返回 undefined 。*
$("#new").click(function() {
    $("input").triggerHandler('focus');
});
// 返回值:jQuery   unbind(type,[data|fn])
// 返回值:jQuery   live(type, [data], fn)
*jQuery 给所有匹配的元素附加一个事件处理函数,(与bind()的区别)即使这个元素是以后再添加进来的也有效。*
// 返回值:jQuery   die(type, [fn])
// 返回值:jQuery   delegate(selector,[type],[data],fn)
$("div").delegate("button", "click", function() {
    $("p").slideToggle();
});
// 返回值:jQuery   undelegate([selector,[type],fn])
// 返回值:jQuery   hover([over,]out)
* hover()方法通过绑定变量"handlerInOut"来切换方法。*
$("td").bind("mouseenter mouseout", handlerInOut);
$("td").hover(handlerInOut);

$("td").hover(function() {
    $(this).addClass("hover");
}, function() {
    $(this).removeClass("hover");
});
// 返回值:jQuery   toggle([speed],[easing],[fn])
$("p").toggle("slow");
// 返回值:jQuery   blur([[data],fn])
// 返回值:jQuery   change([[data],fn])
*该事件仅适用于文本域(text field),以及 textarea 和 select 元素。当用于 select 元素时,change 事件会在选择某个选项时发生。当用于 text field 或 text area 时,该事件会在元素失去焦点时发生。*
// 返回值:jQuery   click([[data],fn])
// 返回值:jQuery   dblclick([[data],fn])
*如果把 dblclick和 click 事件应用于同一元素,可能会产生问题*
// 返回值:jQuery   error([[data],fn])
// 返回值:jQuery   focus([[data],fn])
$("#login").focus();
// 返回值:jQuery   focusin([data],fn)
* focusin事件跟focus事件区别在于,他可以在父元素上检测子元素获取焦点的情况。*
// 返回值:jQuery   focusout([data],fn)
* focusout事件跟blur事件区别在于,他可以在父元素上检测子元素失去焦点的情况。*
// 返回值:jQuery   keydown([[data],fn])
$(window).keydown(function(event) {
    switch (event.keyCode) {

    }
});
// 返回值:jQuery   keypress([[data],fn])
* 每插入一个字符,就会发生 keypress 事件*
// 返回值:jQuery   keyup([[data],fn])
// 返回值:jQuery   mousedown([[data],fn])
$("button").mousedown(function() {
    $("p").slideToggle();
});
// 返回值:jQuery   mouseup([[data],fn])
// 返回值:jQuery   mouseenter([[data],fn])
* 与 mouseover 事件不同,只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件。*
$("p").mouseenter(function() {
    $("p").css("background-color", "yellow");
});
// 返回值:jQuery   mouseleave([[data],fn])
* 只有在鼠标指针离开被选元素时,才会触发 mouseleave 事件*
// 返回值:jQuery   mouseover([[data],fn])
* 不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件*
// 返回值:jQuery   mouseout([[data],fn])
* 不论鼠标指针离开被选元素还是任何子元素,都会触发 mouseout 事件*
// 返回值:jQuery   mousemove([[data],fn])
$(document).mousemove(function(e) {
    $("span").text(e.pageX + "," + e.pageY);
});
// 返回值:jQuery   resize([[data],fn])
$(window).resize(function() {
    alert("stop it");
});
// 返回值:jQuery   scroll([[data],fn])
$(window).scroll(function() {
    $("span").text(x += 1);
});
// 返回值:jQuery   select([[data],fn])
* textarea 或文本类型的 input 元素*
$("input").select(function() {
    return false; //防止触发浏览器的默认行为
});
// 返回值:jQuery   submit([[data],fn])
* 只适用于表单元素
// 返回值:jQuery   unload([[data],fn])

效果

// 返回值:jQuery   show([speed,[easing],[fn]])
* easing:(Optional) 用来指定切换效果,默认是"swing",可用参数"linear"*
// 返回值:jQuery   hide([speed,[easing],[fn]])
// 返回值:jQuery   slideDown([speed],[easing],[fn])
// 返回值:jQuery   slideUp([speed,[easing],[fn]])
$("p").slideUp("slow");
// 返回值:jQuery   slideToggle([speed],[easing],[fn])
// 返回值:jQuery   fadeIn([speed],[easing],[fn])
// 返回值:jQuery   fadeOut([speed],[easing],[fn])
// 返回值:jQuery   fadeTo([[speed],opacity,[easing],[fn]])
$("p").fadeTo("fast", 0.6, function() {
    alert("animation done");
});
// 返回值:jQuery   fadeToggle([speed,[easing],[fn]])
// 返回值:jQuery   animate(params,[speed],[easing],[fn])
* 所有指定的属性必须用骆驼形式,比如用marginLeft代替margin-left*
* 如需对位置进行操作,要记得首先把元素的 CSS position 属性设置为 relative、fixed 或 absolute!*
$("#go").click(function() {
    $("#block").animate({
        width: "90%",
        height: "100%",
        fontSize: "10em",
        borderWidth: 10
    }, 1000);
});
$("#right").animate({
    opacity: 'show',
    height: 'toggle'
}, "slow", "easein");
// 返回值:jQuery   stop([clearQueue],[jumpToEnd])
// 返回值:jQuery   delay(duration,[queueName])
// 返回值:jQuery   finish( [queue ] )
* .stop(true, true)将清除队列,并且目前的动画跳转到其最终值。但是,不同的是,.finish() 会导致所有排队的动画的CSS属性跳转到他们的最终值。*
// 返回值:Boolean  jQuery.fx.off
// 返回值:Number   jQuery.fx.interval

Ajax

// 返回值:XMLHttpRequest   jQuery.ajax(url,[settings])
$.ajax({
        url: '/path/to/file',
        type: 'default GET (Other values: POST)',
        dataType: 'default: Intelligent Guess (Other values: xml, json, script, or html)',
        data: {
            param1: 'value1'
        },
        success: function function_name(data, textStatus, jqXHR) {
            // body...
        },
        complete: function function_name(argument) {
            // body...
        },
        contentType: 'application/x-www-form-erlencoded',
        context: document,
        error: function function_name(XHR, textStatus, errorThrown) {
            // body...
        }
    }).done(function() {
        console.log("success");
    })
    .fail(function() {
        console.log("error");
    })
    .always(function() {
        console.log("complete");
    });
// 返回值:jQuery           load(url, [data], [callback])
$("#feeds").load("feeds.php", {
    limit: 25
}, function() {
    alert("loaded");
});
// 返回值:XMLHttpRequest   jQuery.get(url, [data], [callback], [type])
$.get('test.php', {
    name: "jhon",
    time: 2 px
}, function(argument) {
    // body...
});
// 返回值:XMLHttpRequest   jQuery.getJSON(url, [data], [callback])
$.getJSON('test.js', {
    name: 'john',
    time: '2pm'
}, function(json, textStatus) {
    alert("json data:" + json.users[3].name);
});
// 返回值:XMLHttpRequest   jQuery.getScript(url, [callback])
$.getScript("test.js", function() {
    alert("script");
});
// 返回值:XMLHttpRequest   jQuery.post(url, [data], [callback], [type])
$.post("test.php", {
    "func": getNameAndTime
}, function(data) {
    alert(data.name);
}, "json");
// 返回值:jQuery           ajaxComplete(callback)
$("#txt").ajaxComplete(function() {
    $("#wait").css("display", "none");
});
// 返回值:jQuery           ajaxError(callback)
// 返回值:jQuery           ajaxSend(callback)
// 返回值:jQuery           ajaxStart(callback)
// 返回值:jQuery           ajaxStop(callback)
// 返回值:jQuery           ajaxSuccess(callback)
* XMLHttpRequest 对象和设置作为参数传递给回调函数。*
$("#msg").ajaxSuccess(function(evt, request, settings) {
    $(this).append("<li>请求成功</li>");
});
// 返回值:undefined            jQuery.ajaxPrefilter( [dataTypes] , handler(options, originalOptions, jqXHR) )
// 返回值:jQuery           jQuery.ajaxSetup([options])
// 返回值:String           serialize()
// 返回值:Array<Object>        serializeArray()
* 序列化表格元素 (类似 '.serialize()' 方法) 返回 JSON 数据结构数据。*

属性

// 返回值:String   attr(name|properties|key,value|fn)
$("img").attr({
    src: "test.jpg",
    alt: "test image"
});
$("img").attr("src", "test.jpg");
// 返回值:jQuery   removeAttr(name)
// 返回值:jQuery   prop(name|properties|key,value|fn)
* attribute表示HTML文档节点的属性,property表示JS对象的属性。*
// 返回值:jQuery   removeProp(name)
// 返回值:jQuery   addClass(class|fn)
// 返回值:jQuery   removeClass([class|fn])
$("li:last").removeClass(function() {
    return $(this).prev().attr('class');
});
// 返回值:jQuery   toggleClass(class|fn[,sw])
var count = 0;
$("p").click(function() {
    $(this).toggleClass("highlight", count++ % 3 == 0);
});
// 返回值:String   html([val|fn])
$('p').html(); //返回匹配元素的内容
$('p').has(function(n) {
    return "这个P元素的index是:" + n;
}); //设置匹配元素的内容
// 返回值:String   text([val|fn])
// 返回值:String,Array         val([val|fn|arr])

CSS

// 返回值:String   css(name|pro|[,val|fn])
// 返回值:Object   jQuery.cssHooks
// 返回值:Object   offset([coordinates])
* 获取匹配元素在当前视口的相对偏移。*
var p = $("p:last")
var offset = p.offset();
p.html("left:" + offset.left + "top:" + offset.top);
// 返回值:Object{top,left} position()
* 获取匹配元素相对父元素的偏移。*
// 返回值:Integer  scrollTop([val])
* 获取匹配元素相对滚动条顶部的偏移。*
// 返回值:Integer  scrollLeft([val])
// 返回值:Integer  height([val|fn])
* 不包括padding,border,margin*
// 返回值:Integer  innerHeight()
* 包括padding,不包括border,margin*
// 返回值:Integer  outerHeight([options])
* 包括padding,border,margin*
// 返回值:Integer  width([val|fn])
// 返回值:Integer  innerWidth()
// 返回值:Integer  outerWidth([options])

筛选

// 返回值:jQuery   eq(index|-index)
// 返回值:jQuery   first()
// 返回值:jQuery   last()
// 返回值:Boolean  hasClass(class)
// 返回值:jQuery   filter(expr|obj|ele|fn)
$("p").filter(".selected,:first");
// 返回值:Boolean  is(expr|obj|ele|fn)
$("li").click(function() {
    var $li = $(this);
    isWithTwo = $li.is(function() {
        return $('strong', this).length === 2;
    });
    if (isWithTwo) {
        $li.css('background-color', 'green');
    } else {
        $li.css('background-color', 'red');
    }
}); //如果点击的是第二个strong,当前的li增加背景色为绿色
// 返回值:jQuery   map(callback)
$("p").append($("input").map(function() {
    return $(this).val();
}).get().join(",")); //把每个input元素的值建立一个列表
// 返回值:jQuery   has(expr|ele)
* filter()方法,条件作用于自身;has()方法条件是作用于它的后代元素中。*
$("ul").has("li"); //含有li的ul
// 返回值:jQuery   not(expr|ele|fn)
* 从匹配的集合中删除与指定表达式匹配的元素*
$("p").not($("#select")).css("background-color", "red");
// 返回值:jQuery   slice(start, [end])
$("p").slice(0, 1).wrapInner('<div class="extra-wrapper"></div>');
// 返回值:jQuery   children([expr])
// 返回值:jQuery   closest(expr,[context]|object|element)
// 返回值:jQuery   find(expr|obj|ele)
* children()返回匹配的子元素,find()返回匹配的所有后代元素*
$("ul").find('li'); //在ul里查找li,注意与has()的区别
// 返回值:jQuery   next([expr])
$("p").next(".selected");
// 返回值:jQuery   nextAll([expr])
// 返回值:jQuery   nextUntil([exp|ele][,fil])
// 返回值:jQuery   offsetParent()
* 返回父元素中第一个其position设为relative或者absolute的元素*
// 返回值:jQuery   parent([expr])
// 返回值:jQuery   parents([expr])
// 返回值:jQuery   parentsUntil([expr|element][,filter])
// 返回值:jQuery   prev([expr])
// 返回值:jQuery   prevAll([expr])
// 返回值:jQuery   prevUntil([exp|ele][,fil])
// 返回值:jQuery   siblings([expr])
// 返回值:jQuery   add(expr|ele|html|obj[,con])
* add()追加到元素集合中,append()添加元素节点*
// 返回值:jQuery   andSelf()
// 返回值:jQuery   contents()
// 返回值:jQuery   end()




// 事件对象
// 延迟对象
// 回调函数
// 工具

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容