jQuery复制文本到剪切板

阅读(184)

少说废话,上代码:

// 复制文本内容到剪切板
function copyText(obj) {
  if (!obj) {
    return false;
  }
  var text;
  if (typeof(obj) == 'object') {
    if (obj.nodeType) { // DOM node
      obj = $(obj); // to jQuery object
    }
    try {
      text = obj.text();
      if (!text) { // Maybe <textarea />
        text = obj.val();
      }
    } catch (err) { // as JSON
      text = JSON.stringify(obj);
    }
  } else {
    text = obj;
  }
  //var $temp = $('<input>'); // Line feed is not supported
  var $temp = $('<textarea>');
  $('body').append($temp);
  $temp.val(text).select();
  var res = document.execCommand('copy');
  $temp.remove();
  return res;
}

调用示例:

<textarea id="taCode" rows="8" style="resize: none"></textarea>
<button type="button" class="btn btn-primary" onclick="copyText($('#taCode'))">复制 方法一</button>
<button id="btCopy" type="button" class="btn btn-primary">复制 方法二</button>

<script type="text/javascript">
$("#btCopy").click(function() {
  //copyText($("#taCode").text());
  copyText($("#taCode").val());
});
</script>

参考链接:https://github.com/by-syk/jquery-copy

如何翻译(汉化)wordpress主题和插件?

阅读(465)

wordpress是一个非常完善的开源项目,无数拓展和优秀的主题。但是很多优秀的wordpress主题和wordpress插件大多都源于国外,

也就是说都是英文,并不适合国人使用。尤其是英语水平一般的普通用户,我们就需要翻译(汉化)和调整它的显示语言,使之更适

合国人。这个把英文翻译成中文的过程,我们称之为汉化。例如:The7汉化版,是国外模板,经汉化和修改后才更适合我们投入到响

应式网站建设中。wordpress主题和插件汉化都是异曲同工的道理,有几种方法这边说下:一种是用软件汉化;另一种是用插件汉化;

最后一种是直接修改源码翻译。但不论是哪种,自己亲自动手填写翻译文本,插件汉化是安装插件,扫描出要翻译的文本,最后在

wordpress后台直接翻译,生成.mo和.po文件。几种常见的汉化方法操作教程如下。

方法一、使用Poedit软件生成语言包进行汉化

关于Poedit软件(绿色破解版下载地址):http://pan.baidu.com/s/1qYipLW4 ,来源于网络。开发者可直接download。切记这个是要破解版的,不是破解版的没法翻译主题和插件,只能翻译已有的po文件包。

首选我们打开,看到界面如下:

我们可以看到第三项功能,翻译wordpress的主题或插件

点开第三个,我们开始翻译主题或者插件。记住是选中主题或者插件的目录。软件自动扫描。下面我们以汉化enfold版本为例:

我们选择zh_CN(中文),此时我们看到等待汉化的词条已经扫码出来了:

选中词条开始翻译,然后保存,保存完毕后来到文件那里,选择里面的编译为mo,平均1分钟翻译5个词条来计算,全部翻译完成。差不多4个小时左右。仅仅只是主题,还有插件。当然插件的汉化方法也一样如上。

方法二、使用Codestyling Localization(非常非常好用)

Codestyling Localizationhttp://www.code-styling.de/english/development/wordpress-plugin-codestyling-localization-en

我们在后台找到这个插件

我们点开之后,看到插件,添加语言即可

扫码即可

同理,一样一条一条的翻译即可。

方法三、使用WPML汉化主题和插件

在WordPress中获取数据库字段内容和添加主题设置菜单

阅读(527)

get_option() 函数使用技巧 get_option()这个函数,实际上我们在整合后台功能的时候经常会用到的一个函数,主要用来从 WordPress 博客数据库 option 表中取得我们想要的字段内容的一个函数,在目前大部分的主题中,只要是主题集成了后台控制页面,也大都用到了这个函数,虽然 WP 给了我们很多方法去临时存储我们对主题的设置,但是用比较稳定的数据库去存储主题设置还是大部分主题作者的首选。

get_option() 函数的解释、用法网上还是有很多中文文献的,包括官方文档该函数也有中文版的解释,因为使用起来简单,思路比较清晰所以这里就不过多解释。
官方API :get_option
直接备忘用法

使用技巧
通常我们取设置的时候,会加一个判断,因为我们不知道主题是不是第一次在系统中安装,

if (!get_option('xiangzi')){//判断是否存在
 $default_xiangzi = array (//先设置一个默认值
 'title'=>'博客',
 'name'=>'翔子',
 'url'=>'pangbu.com');
 update_option('xiangzi', $default_xiangzi);
 //设置option的默认值
}
$xiangzi = get_option('xiangzi');//获取设置

很凑巧,出于某种原因 WP 官方为我们增设了get_option 函数的第二个参数
所以我们可以这样

$default_xiangzi = array (//先设置一个默认值
 'title'=>'博客',
 'name'=>'翔子',
 'url'=>'pangbu.com')
$xiangzi = get_option('xiangzi',$default_xiangzi);
//这样是不是很简单?

add_theme_page()函数-添加你的主题设置菜单
也许你会觉得,Wordpress 官方默认主题,是一个很蛋疼的主题,样式丑陋、并且功能简陋,有一种只有陋室铭这种励志类的文章才能鼓励你用下去的感觉,也许你会觉得这个主题除了给那些不会安装主题的菜菜菜菜菜鸟用之外几乎毫无用处,那你就错了。官方默认主题的最大用处就是有很大的研究价值,至少我目前的 WP 主题知识大部分都是通过研究默认主题得来的,今天研究的是add_theme_page()函数。

描述
add_theme_page()函数,在 WordPress 后台添加页面。在这里我们一般都是为了添加设置页面才用到该函数,当然你要是闲的蛋疼的话,你可以添加诸如个人说明的页面在后台。

使用

<?php
add_theme_page( $page_title, $menu_title, $capability, $menu_slug, $function);
//page_titile-title标签的内容
//menu_title-显示在后台左边菜单的标题
//capability-访问这个页面需要的权限
//menu_slug-别名,需要独一无二哦
//function-执行的函数
?>

$page_title, $menu_title, $capability, $menu_slug, $function 这几个参数比较常用。

因为add_theme_page()函数使用起来实在是太简单了,所以我们还是直接上代码吧。

实例

function xz_theme_options_add_page() {
 $theme_page = add_theme_page(
 '主题设置', //页面Titlee
 '主题设置', // 在后台菜单中显示的名字
 'edit_theme_options',   // 选项放置的位置
 'theme_options',    // 别名,也就是get传送的参数
 'xz_theme_op_page' //调用显示内容调用的函数
 );
}
function xz_theme_op_page (){//内容显示函数
 echo "我是主题编辑页面";
}
add_action( 'admin_menu', 'xz_theme_options_add_page' );

动态生成的DOM做点击事件无效

阅读(480)

有时候我们的标签都是从后台获取的数据,然后利用JS添加到页面上,当我们写生成的标签的点击事件(click)时没有效果。

例如:

<section>
测试动态生成的DOM点击事件
<br />
</section> 
<script src="jquery-1.11.2.min.js"></script>
<script> 
$(function () {
$.ajax({
type: "post",
url: "Handler1.ashx",
data: {},
success: function (data) {
$("section").append(data); //把获取的标签动态添加到页面中
}
})
});
$("#test").click(function () {
alert("Smile");
})
</script>

生成页面,点击A标签无效果。

这里只介绍两种解决方法。

①把事件写在生成的字符串当中,感觉很low


里面什么方法名外面就声明一个(需要带参就传参)。

②我一般喜欢在JS里面直接写点击事件,不喜欢在标签里面写事件

我们直接写这个标签的点击事件是没效果的,我们就换个写法,利用On来完成。

这样也可以完成点击事件。

另附:a标签的href也是可以执行脚本的,点击事件也会执行脚本,点击事件优先,然后在执行href链接。

下载一般都是把A标签的Href给个一般处理程序的链接(参数就用?传值)。但我这个下载的参数是动态生成的,在后台生成字符串的时候没有参数。需要在前台根据用户选择的来进行传递参数。所以需要我们动态生成Href的链接。

//下载
$("#uploadInfo").click(function () {
var uids = "";
$(":checkbox[name='A']:checked").each(function (i, item) {
uids += $(item).attr("data-id") + ",";
})
if (uids === "") {
NewAlertBox("warning","请最少选择一项",2000);
} else {
var urls = "GroupTeamUserListDocUpload.ashx?CaseID=" + CaseID + "&UID=" + uids;
$(this).attr("href", urls); //执行完了点击事件,把Href赋值,然后自动跳转href链接
}

});

移动端-仿京东秒杀倒计时

阅读(849)

京东秒杀倒计时

HTML代码:

 <div class="jd_secKill_left">
    <span class="ms_icon"></span>
    <h4 class="ms_name fl">掌上秒杀</h4>
    <div class="ms_time fl">
        <span class="num fl">0</span>
        <span class="num fl">0</span>
         <span class="str fl">:</span>
         <span class="num fl">0</span>
        <span class="num fl">0</span>
        <span class="str fl">:</span>
        <span class="num fl">0</span>
        <span class="num fl">0</span>
    </div>
 </div>
<div class="jd_secKill_right fr">
   <a href="">更多></a>
</div>

css代码:

.jd_secKill{
}
.jd_secKill .jd_secKill_left{
    float: left;
}
.jd_secKill .jd_secKill_left .ms_icon{
    background: url("../images/seckill-icon.png") no-repeat;
    background-size: 16px 20px;
    width: 16px;
    height: 20px;
    display: block;
    float: left;
    margin-left: 8px;
    margin-top: 6px;
}
.jd_secKill .jd_secKill_left .ms_name{
    font-size: 15px;
    color: #d8505c;
    font-weight: inherit;
    margin-left: 8px;
    line-height:30px;
}
.jd_secKill .jd_secKill_left .ms_time{
    margin-top: 6px;
    margin-left: 8px;
}
.jd_secKill .jd_secKill_left .ms_time span{
    margin-right: 3px;
    display: block;
    line-height:20px;
}
.jd_secKill .jd_secKill_left .ms_time .num{
    width: 15px;
    height: 20px;
    text-align: center;
    background: #333;
    color:#fff;
}
.jd_secKill .jd_secKill_left .ms_time .str{
    width: 4px;
    height: 15px;
    text-align: center;
}
.jd_secKill_right a{
    line-height:32px;
    margin-right: 10px;
}

js代码:

/*秒杀倒计时*/
var secondKill = function() {
  /*复盒子*/
  var parentTime = document.getElementsByClassName('ms_time')[0];
   /*span时间*/
  var timeList = parentTime.getElementsByClassName('num');
  console.log(timeList.length);
  var times = 7 * 60 * 60;
  var timer;
  timer = setInterval(function () {
  times--;
  var h = Math.floor(times / (60 * 60));
  var m = Math.floor(times / 60 % 60);
  var s = times % 60;

  //console.log(h + '-' + m + "-" + s);

  timeList[0].innerHTML = h > 10 ? Math.floor(h / 10) : 0;
  timeList[1].innerHTML = h % 10;

  timeList[2].innerHTML = m > 10 ? Math.floor(m / 10) : 0;
  timeList[3].innerHTML = m % 10;

  timeList[4].innerHTML = s > 10 ? Math.floor(s / 10) : 0;
  timeList[5].innerHTML = s % 10;
  if (times <= 0) {
      clearInterval(timer);
  }
 }, 1000);
}
secondKill();

SQL中Group By的使用

阅读(387)

声明:本文为转载,欢迎大家支持原作者。

1、概述

“Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。

2、原始表

3、简单Group By

示例1

select 类别, sum(数量) as 数量之和
from A
group by 类别

返回结果如下表,实际上就是分类汇总。

这里纠正一下,笔者实践结果如下:

select 类别, count(数量) as 数量之和 from A group by 类别

因此:大家在实践的时候如果发现没有得到想要的结果的时候,可以把sum换成count试试。

4、Group By 和 Order By

示例2

select 类别, sum(数量) AS 数量之和
from A
group by 类别
order by sum(数量) desc

返回结果如下表

在Access中不可以使用“order by 数量之和 desc”,但在SQL Server中则可以。

5、Group By中Select指定的字段限制

示例3

select 类别, sum(数量) as 数量之和, 摘要
from A
group by 类别
order by 类别 desc

示例3执行后会提示下错误,如下图。这就是需要注意的一点,在select指定的字段要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中。

6、Group By All

示例4

select 类别, 摘要, sum(数量) as 数量之和
from A
group by all 类别, 摘要

示例4中则可以指定“摘要”字段,其原因在于“多列分组”中包含了“摘要字段”,其执行结果如下表

“多列分组”实际上就是就是按照多列(类别+摘要)合并后的值进行分组,示例4中可以看到“a, a2001, 13”为“a, a2001, 11”和“a, a2001, 2”两条记录的合并。

SQL Server中虽然支持“group by all”,但Microsoft SQL Server 的未来版本中将删除 GROUP BY ALL,避免在新的开发工作中使用 GROUP BY ALL。Access中是不支持“Group By All”的,但Access中同样支持多列分组,上述SQL Server中的SQL在Access可以写成

select 类别, 摘要, sum(数量) AS 数量之和
from A
group by 类别, 摘要

7、Group By与聚合函数

在示例3中提到group by语句中select指定的字段必须是“分组依据字段”,其他字段若想出现在select中则必须包含在聚合函数中,常见的聚合函数如下表:

函数 作用 支持性
sum(列名) 求和
max(列名) 最大值
min(列名) 最小值
avg(列名) 平均值
first(列名) 第一条记录 仅Access支持
last(列名) 最后一条记录 仅Access支持
count(列名) 统计记录数 注意和count(*)的区别

示例5:求各组平均值

select 类别, avg(数量) AS 平均值 from A group by 类别;

示例6:求各组记录数目

select 类别, count(*) AS 记录数 from A group by 类别;

示例7:求各组记录数目

8、Having与Where的区别

  • where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。
  • having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。

示例8

select 类别, sum(数量) as 数量之和 from A
group by 类别
having sum(数量) > 18

示例9:Having和Where的联合使用方法

select 类别, SUM(数量)from A
where 数量 gt;8
group by 类别
having SUM(数量) gt; 10

9、Compute 和 Compute By

select * from A where 数量 > 8

执行结果:

示例10:Compute

select *
from A
where 数量>8
compute max(数量),min(数量),avg(数量)

执行结果如下:

compute子句能够观察“查询结果”的数据细节或统计各列数据(如例10中max、min和avg),返回结果由select列表和compute统计结果组成。

示例11:Compute By

select *
from A
where 数量>8
order by 类别
compute max(数量),min(数量),avg(数量) by 类别

执行结果如下:

示例11与示例10相比多了“order by 类别”和“… by 类别”,示例10的执行结果实际是按照分组(a、b、c)进行了显示,每组都是由改组数据列表和改组数统计结果组成,另外:

  • compute子句必须与order by子句用一起使用
  • compute…by与group by相比,group by 只能得到各组数据的统计结果,而不能看到各组数据

在实际开发中compute与compute by的作用并不是很大,SQL Server支持compute和compute by,而Access并不支持。

原文地址:https://www.cnblogs.com/jingfengling/p/5962182.html,请支持原创作者。