#989
展开↯#990
作者:广西南宁市
1.获取选中值,三种方法都可以:
$('input:radio:checked').val();
$("input[type='radio']:checked").val();
$("input[name='rd']:checked").val();
2.设置第一个Radio为选中值:
$('input:radio:first').attr('checked', 'checked');
或者
$('input:radio:first').attr('checked', 'true');
注:attr("checked",'checked')= attr("checked", 'true')= attr("checked", true)
3.设置最后一个Radio为选中值:
$('input:radio:last').attr('checked', 'checked');
或者
$('input:radio:last').attr('checked', 'true');
4.根据索引值设置任意一个radio为选中值:
$('input:radio').eq(索引值).attr('checked', 'true');索引值=0,1,2....
或者
$('input:radio').slice(1,2).attr('checked', 'true');
5.根据Value值设置Radio为选中值
$("input:radio[value=http://www.2cto.com/kf/201110/'rd2']").attr('checked','true');
或者
$("input[value=http://www.2cto.com/kf/201110/'rd2']").attr('checked','true');
6.删除Value值为rd2的Radio
$("input:radio[value=http://www.2cto.com/kf/201110/'rd2']").remove();
7.删除第几个Radio
$("input:radio").eq(索引值).remove();索引值=0,1,2....
如删除第3个Radio:$("input:radio").eq(2).remove();
8.遍历Radio
$('input:radio').each(function(index,domEle){
//写入代码
});
Run code
Cut to clipboard
文章:js获取select标签选中的值 发表时间:2017-09-05, 14:59:40
#992
作者:广西南宁市
微信授权登录成功但是却是空白页面
#,广西南宁市,2017-09-04,14:39:53, 微信网页授权 微信公众平台技术文档
/**
* 通过oauth2.0获取openid
* 若只需要获取用户openid,调用次方法,若需要获取用户所有信息,请调用getOpenidByOauth2()方法
*/
protected function getOpenidByOauth() {
$wx_info = $this->wx_info;
// 获取openid
if (!$openid) {
if (!isset($_GET['code'])) {
$customeUrl = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$scope = 'snsapi_base';
$oauthUrl = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' . $wx_info['appid'] . '&redirect_uri=' . urlencode($customeUrl) . '&response_type=code&scope=' . $scope . '&state=oauth#wechat_redirect';
header('Location:' . $oauthUrl);
exit();
}else{
$url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $wx_info['appid'] . '&secret=' . $wx_info['appsecret'] . '&code=' . $_GET['code'] . '&grant_type=authorization_code';
$result = json_decode(curlGet($url), true);
$openid = $result['openid'];
}
}
Run code
Cut to clipboard
文章:PHP实现微信支付(jsapi支付)和退款(无需集成支付SDK) 发表时间:2017-09-04, 14:38:43
#993
作者:广西南宁市
swf新型版本浏览器,谷歌浏览器空白,flash兼容新版本浏览器
#,广西南宁市,2017-08-31,17:15:27, HTML插入SWF
<object classid="clsid27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"
width="100%" height="100%" align="center">
<param name="movie" value="../Public/flash/jinti.swf">
<param name="quality" value="high">
<param name="wmode" value="transparent"> <!--这里代码可使Flash背景透明 -->
<embed src="../Public/flash/jinti.swf" width="100%" height="100%"
align="center" quality="high"
pluginspage="http://www.macromedia.com/go/getflashplayer"
type="application/x-shockwave-flash">
</embed>
</object>
Run code
Cut to clipboard
文章:常用html、demo代码 发表时间:2017-08-31, 17:00:10
#994
作者:广西南宁市
JQuery 对 Select option 的操作
下拉框:
下面是对下拉框的基本操作:
#,广西南宁市,2017-08-31,15:28:46,
option[text=5]这种?为什么我不行,而且网上也有一些说不行的。但是也有很多这样子写的,这到底是误导还是?
下拉框:
<select id="selectID" >
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
</select>
Run code
Cut to clipboard
下面是对下拉框的基本操作:
<script language="javascript">
$(document).ready(function() {
//绑定下拉框change事件,当下来框改变时调用 SelectChange()方法
$("#selectID").change(function() { SelectChange(); });
})
function SelectChange() {
//获取下拉框选中项的text属性值
var selectText = $("#selectID").find("option:selected").text();
alert(selectText);
//获取下拉框选中项的value属性值
var selectValue = $("#selectID").val();
alert(selectValue);
//获取下拉框选中项的index属性值
var selectIndex = $("#selectID").get(0).selectedIndex;
alert(selectIndex);
////获取下拉框最大的index属性值
var selectMaxIndex = $("#selectID option:last").attr("index");
alert(selectMaxIndex);
}
function aa() {
//设置下拉框index属性为5的选项 选中
$("#selectID").get(0).selectedIndex = 5;
}
function bb() {
//设置下拉框value属性为4的选项 选中
$("#selectID").val(4);
}
function cc() {
//设置下拉框text属性为5的选项 选中
$("#selectID option[text=5]").attr("selected", "selected");
$("#yyt option:contains('5')").attr("selected", true);
}
function dd() {
//在下拉框最后添加一个选项
$("#selectID").append("<option value='7'>7</option>");
}
function ee() {
//在下拉框最前添加一个选项
$("#selectID").prepend("<option value='0'>0</option>")
}
function ff() {
//移除下拉框最后一个选项
$("#selectID option:last").remove();
}
function gg() {
//移除下拉框 index属性为1的选项
$("#selectID option[index=1]").remove();
}
function hh() {
//移除下拉框 value属性为4的选项
$("#selectID option[value=4]").remove();
}
function ii() {
//移除下拉框 text属性为5的选项
$("#selectID option[text=5]").remove();
}
</script>
Run code
Cut to clipboard
option[text=5]这种?为什么我不行,而且网上也有一些说不行的。但是也有很多这样子写的,这到底是误导还是?
文章:on click事件在移动端点击无效bug 发表时间:2017-08-31, 15:28:13
#995
作者:广西南宁市
修改输入框placeholder文字默认颜色-webkit-input-placeholder
也可以给这个属性加字体
:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
color: #000; opacity:1;
}
::-moz-placeholder { /* Mozilla Firefox 19+ */
color: #000;opacity:1;
}
input:-ms-input-placeholder{
color: #000;opacity:1;
}
input::-webkit-input-placeholder{
color: #000;opacity:1;
}
Run code
Cut to clipboard
也可以给这个属性加字体
input::-webkit-input-placeholder { /* WebKit browsers*/
color:#999;font-size:14px;
}
input:-moz-placeholder { /* Mozilla Firefox 4 to 18*/
color:#999;font-size:14px;
}
input::-moz-placeholder { /* Mozilla Firefox 19+*/
color:#999;font-size:14px;
}
input:-ms-input-placeholder { /* Internet Explorer 10+*/
color:#999;font-size:14px;
}
Run code
Cut to clipboard
文章:on click事件在移动端点击无效bug 发表时间:2017-08-31, 15:27:13
#996
作者:广西南宁市
jquery去掉onclick事件
删除onclick属性:$(“a”).removeAttr(“onclick”);
设置onclick属性:$(“a”).attr(“onclick”,”test();”);
Run code
Cut to clipboard
文章:on click事件在移动端点击无效bug 发表时间:2017-08-31, 15:26:18
#997
作者:广西南宁市
[微信开发]invalid credential, access_token is invalid or not latest hint
##################正解################
这种情况跟这个库没有直接关系。
请检查一下是否有别的地方同时请求了access token,导致微信服务器发放了新的access token给别人。尤其是dev环境
##################正解################
查了好久,先发现下载到本地的文件size很小,只有100来字节,我以为只有头文件,老大说,你要么看看这文件的二进制流是什么,打开一看原来是一个error信息,是JSON字符串
{"errcode":40001,"errmsg":"invalid credential, access_token is invalid or not latest hint: [2HYQIa0031ge10] "}
看了下错误code,是access_token过期。
但是官网里说 token默认是7200秒过期,为啥那么快?结果后来百度到,如果有第二地方也请求同一个token的话,那么第一个token会在5分钟之内过期。这也就说明了,为什么在我搭建好第二个环境的时候,老环境就出现了这种问题。因为这两个环境用的是同一个AppID和AppSecret来取得的
access_token,而这个access_token的取得并不是在服务器启动的时候,而且是在需要调用接口的画面初期化的时候去取得的。把取得的token放在s()全局缓存变量中,3600秒过期,方法是
所以就一直使用过期的token;一旦token过期,就无法调用js接口了。
##################正解################
这种情况跟这个库没有直接关系。
请检查一下是否有别的地方同时请求了access token,导致微信服务器发放了新的access token给别人。尤其是dev环境
##################正解################
查了好久,先发现下载到本地的文件size很小,只有100来字节,我以为只有头文件,老大说,你要么看看这文件的二进制流是什么,打开一看原来是一个error信息,是JSON字符串
{"errcode":40001,"errmsg":"invalid credential, access_token is invalid or not latest hint: [2HYQIa0031ge10] "}
看了下错误code,是access_token过期。
但是官网里说 token默认是7200秒过期,为啥那么快?结果后来百度到,如果有第二地方也请求同一个token的话,那么第一个token会在5分钟之内过期。这也就说明了,为什么在我搭建好第二个环境的时候,老环境就出现了这种问题。因为这两个环境用的是同一个AppID和AppSecret来取得的
access_token,而这个access_token的取得并不是在服务器启动的时候,而且是在需要调用接口的画面初期化的时候去取得的。把取得的token放在s()全局缓存变量中,3600秒过期,方法是
$token = s("access_token");
if($token){
//重新取得token;
}
return $token;
Run code
Cut to clipboard
所以就一直使用过期的token;一旦token过期,就无法调用js接口了。
文章:最简单的微信支付和退款(无需集成微信支付SDK)代码 发表时间:2017-08-31, 15:09:14
#998
展开↯#999
作者:广西南宁市
点击出现黑色背景的解决:-webkit-tap-highlight-color:rgba(0,0,0,0)
在手机上(iphone)点击按钮的时候,屏幕总会闪动一下,这让页面看起来很不友好也不流畅。解决方案加了一句css就解决了:
//webkit是苹果浏览器引擎,tap点击,highlight背景高亮,color颜色,颜色用数值调节。
原因如下:
在移动端上,有事件监听的元素被点击的时候会被高亮显示,而-webkit-tap-highlight-color属性会在当用户点击iOS的Safari浏览器中的链接或JavaScript的可点击的元素时,覆盖显示的高亮颜色。
该属性可以只设置透明度。如果未设置透明度,iOS Safari使用默认的透明度。当透明度设为0,则会禁用此属性;当透明度设为1,元素在点击时不可见。
ios微信点击超链接,去掉半透明黑色框效果
iOS微信点击超链接或是图片超链接,总是弹出一层黑色遮罩层,在a标签上添加style='-webkit-tap-highlight-color:rgba(255,0,0,0);'即可
在手机上(iphone)点击按钮的时候,屏幕总会闪动一下,这让页面看起来很不友好也不流畅。解决方案加了一句css就解决了:
-webkit-tap-highlight-color:rgba(0,0,0,0)
Run code
Cut to clipboard
//webkit是苹果浏览器引擎,tap点击,highlight背景高亮,color颜色,颜色用数值调节。
原因如下:
在移动端上,有事件监听的元素被点击的时候会被高亮显示,而-webkit-tap-highlight-color属性会在当用户点击iOS的Safari浏览器中的链接或JavaScript的可点击的元素时,覆盖显示的高亮颜色。
该属性可以只设置透明度。如果未设置透明度,iOS Safari使用默认的透明度。当透明度设为0,则会禁用此属性;当透明度设为1,元素在点击时不可见。
a{-webkit-tap-highlight-color:rgba(255,0,0,0);outline:none;}
Run code
Cut to clipboard
ios微信点击超链接,去掉半透明黑色框效果
iOS微信点击超链接或是图片超链接,总是弹出一层黑色遮罩层,在a标签上添加style='-webkit-tap-highlight-color:rgba(255,0,0,0);'即可
文章:on click事件在移动端点击无效bug 发表时间:2017-08-31, 15:00:46
#1000
作者:广西南宁市
异步接收通知
/**
* notify_url接收页面
*/
public function notify(){
// ↓↓↓下面的file_put_contents是用来简单查看异步发过来的数据 测试完可以删除;↓↓↓
// 获取xml
$xml=file_get_contents('php://input', 'r');
//转成php数组 禁止引用外部xml实体
libxml_disable_entity_loader(true);
$data= json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA));
file_put_contents('./notify.text', $data);
// ↑↑↑上面的file_put_contents是用来简单查看异步发过来的数据 测试完可以删除;↑↑↑
// 导入微信支付sdk
Vendor('Weixinpay.Weixinpay');
$wxpay=new \Weixinpay();
$result=$wxpay->notify();
if ($result) {
// 验证成功 修改数据库的订单状态等 $result['out_trade_no']为订单id
}
}
Run code
Cut to clipboard
文章:ThinkPHP中实现微信支付(jsapi支付)流程 发表时间:2017-08-31, 14:52:38
#1001
作者:广西南宁市
/**
* 使用curl获取远程数据
* @param string $url url连接
* @return string 获取到的数据
*/
function curl_get_contents($url){
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, $url); //设置访问的url地址
// curl_setopt($ch,CURLOPT_HEADER,1); //是否显示头部信息
curl_setopt($ch, CURLOPT_TIMEOUT, 5); //设置超时
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); //用户访问代理 User-Agent
curl_setopt($ch, CURLOPT_REFERER,$_SERVER['HTTP_HOST']); //设置 referer
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1); //跟踪301
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回结果
$r=curl_exec($ch);
curl_close($ch);
return $r;
}
Run code
Cut to clipboard
文章:ThinkPHP中实现微信支付(jsapi支付)流程 发表时间:2017-08-31, 14:51:30
#1002
作者:广西南宁市
// 返回状态给微信服务器
if ($result) {
$str='<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>';
}else{
$str='<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[签名失败]]></return_msg></xml>';
}
echo $str;
return $result;
Run code
Cut to clipboard
文章:ThinkPHP中实现微信支付(jsapi支付)流程 发表时间:2017-08-31, 14:47:45
#1003
作者:广西南宁市
微信支付接口返回“签名错误”的排查方法
1、确认公众号的appSecret和商户号的API密钥没有搞混。
2、重置商户API密钥。(本人亲测是这样解决了问题,tx真是个坑,我严重鄙视。)
3、确认公众号授权的域名和目录是正确的。
4、参数body含有中文字符,改换英文签名成功,那么就转换字符编码试试。
$dat = iconv('UTF-8','ISO8859-1',array2xml($package));
5、血的教训,以上都试过之后,再仔细对比参数,确认签名算法没有问题,可以使用官网的调试工具验证自己的签名是否正确。
1、确认公众号的appSecret和商户号的API密钥没有搞混。
2、重置商户API密钥。(本人亲测是这样解决了问题,tx真是个坑,我严重鄙视。)
3、确认公众号授权的域名和目录是正确的。
4、参数body含有中文字符,改换英文签名成功,那么就转换字符编码试试。
$dat = iconv('UTF-8','ISO8859-1',array2xml($package));
5、血的教训,以上都试过之后,再仔细对比参数,确认签名算法没有问题,可以使用官网的调试工具验证自己的签名是否正确。
文章:ThinkPHP中实现微信支付(jsapi支付)流程 发表时间:2017-08-31, 14:44:33
#1004
作者:广西南宁市
把xml转成数组
$result= json_decode(json_encode(simplexml_load_string($xmlstr, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
Run code
Cut to clipboard
文章:ThinkPHP中实现微信支付(jsapi支付)流程 发表时间:2017-08-31, 14:42:26
#1005
作者:广西南宁市
支持成功回调
通过前端jsApiCall()函数可以监听支付结果,但是这个并不可信。确认是否支付成功还是应当通过notify.php 处理业务逻辑。前边配置好了支付验证链接SetNotify_url(),支付完成后,微信服务器会根据链接自动请求你的notify.php文件,打开这个文件,其实这个文件最主要的代码就两行:
由此跟踪到WxPay.Notify.php类文件的Handle()函数:
主要代码:
然后来到WxPay.Api.php文件的第411行,notify()函数:
这里面的$xml=$GLOBALS['HTTP_RAW_POST_DATA'],就是支付成功后用户返回给你的一个结果,他是一个xml格式的字符串。

我们可以将这里返回的xml数据记录下来,然后打开看看$out_trade_no就是在支付之前我自己设置的订单号码,$attach就是设置的附加参数。
得到了这个订单号,然后我就直接在下面写支付成功后的逻辑了,比如改变数据库中的数据等等。
这样 微信支付的 JsApi支付就大致分析完成了。
通过前端jsApiCall()函数可以监听支付结果,但是这个并不可信。确认是否支付成功还是应当通过notify.php 处理业务逻辑。前边配置好了支付验证链接SetNotify_url(),支付完成后,微信服务器会根据链接自动请求你的notify.php文件,打开这个文件,其实这个文件最主要的代码就两行:
$notify = new PayNotifyCallBack();
$notify->Handle(false);
Run code
Cut to clipboard
由此跟踪到WxPay.Notify.php类文件的Handle()函数:
/**
*
* 回调入口
* @param bool $needSign 是否需要签名输出
*/
final public function Handle($needSign = true)
{
$msg = "OK";
//当返回false的时候,表示notify中调用NotifyCallBack回调失败获取签名校验失败,此时直接回复失败
$result = WxpayApi::notify(array($this, 'NotifyCallBack'), $msg);
if($result == false){
$this->SetReturn_code("FAIL");
$this->SetReturn_msg($msg);
$this->ReplyNotify(false);
return;
} else {
//该分支在成功回调到NotifyCallBack方法,处理完成之后流程
$this->SetReturn_code("SUCCESS");
$this->SetReturn_msg("OK");
}
$this->ReplyNotify($needSign);
}
Run code
Cut to clipboard
主要代码:
$result = WxpayApi::notify(array($this, 'NotifyCallBack'), $msg);
Run code
Cut to clipboard
然后来到WxPay.Api.php文件的第411行,notify()函数:
/**
*
* 支付结果通用通知
* @param function $callback
* 直接回调函数使用方法: notify(you_function);
* 回调类成员函数方法:notify(array($this, you_function));
* $callback 原型为:function function_name($data){}
*/
public static function notify($callback, &$msg)
{
//获取通知的数据
$xml = $GLOBALS['HTTP_RAW_POST_DATA'];
//file_put_contents('log.txt',$xml,FILE_APPEND);
//如果返回成功则验证签名
try {
$result = WxPayResults::Init($xml);
} catch (WxPayException $e){
$msg = $e->errorMessage();
return false;
}
return call_user_func($callback, $result);
}
Run code
Cut to clipboard
这里面的$xml=$GLOBALS['HTTP_RAW_POST_DATA'],就是支付成功后用户返回给你的一个结果,他是一个xml格式的字符串。
我们可以将这里返回的xml数据记录下来,然后打开看看$out_trade_no就是在支付之前我自己设置的订单号码,$attach就是设置的附加参数。
得到了这个订单号,然后我就直接在下面写支付成功后的逻辑了,比如改变数据库中的数据等等。
这样 微信支付的 JsApi支付就大致分析完成了。
文章:PHP实现微信支付(jsapi支付)和退款(无需集成支付SDK) 发表时间:2017-08-31, 14:31:16
#1006
作者:广西南宁市
打开lib文件夹下的WxPay.Api.PHP文件,在537行有一段curl网络请求配置代码:
替换成:
为了禁止 cURL 验证对等证书(peer's certificate)。 #,广西南宁市,2017-08-31,14:25:03, curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2) 这个地方应该也需要改。不是2 而是false #,广西南宁市,2017-08-31,14:25:14,@1 , 这个是不需要改的,验证主机,严格校验
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,TRUE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);//严格校验
Run code
Cut to clipboard
替换成:
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);//严格校验
Run code
Cut to clipboard
为了禁止 cURL 验证对等证书(peer's certificate)。
文章:PHP实现微信支付(jsapi支付)和退款(无需集成支付SDK) 发表时间:2017-08-31, 14:24:47
#1007
作者:广西南宁市
php中session_destroy()的作用?
session_destroy() destroys all of the data associated with the current session. It does not unset any of the global variables associated with the session, or unset the session cookie. To use the session variables again, session_start() has to be called.
它会destroys all of the data associated with the current session,但是它既不注销变量,又不注销session cookie。那它做了什么?还有这个函数有什么用呢?
session_destroy() 销毁当前会话中的全部数据, 但是不会重置当前会话所关联的全局变量, 也不会重置会话 cookie。 如果需要再次使用会话变量, 必须重新调用 session_start() 函数。
为了彻底销毁会话,比如在用户退出登录的时候,必须同时重置会话 ID。 如果是通过 cookie 方式传送会话 ID 的,那么同时也需要 调用setcookie() 函数来 删除客户端的会话 cookie。
范例
#,广西南宁市,2017-08-31,10:34:39,
#,广西南宁市,2017-08-31,10:34:53, 在使用session_destroy()的时候 应该先使用session_start() 不然session_destroy()不起作用
session_destroy() destroys all of the data associated with the current session. It does not unset any of the global variables associated with the session, or unset the session cookie. To use the session variables again, session_start() has to be called.
它会destroys all of the data associated with the current session,但是它既不注销变量,又不注销session cookie。那它做了什么?还有这个函数有什么用呢?
session_destroy() 销毁当前会话中的全部数据, 但是不会重置当前会话所关联的全局变量, 也不会重置会话 cookie。 如果需要再次使用会话变量, 必须重新调用 session_start() 函数。
为了彻底销毁会话,比如在用户退出登录的时候,必须同时重置会话 ID。 如果是通过 cookie 方式传送会话 ID 的,那么同时也需要 调用setcookie() 函数来 删除客户端的会话 cookie。
范例
<?php
// 初始化会话。
// 如果要使用会话,别忘了现在就调用:
session_start();
// 重置会话中的所有变量
$_SESSION = array();
// 如果要清理的更彻底,那么同时删除会话 cookie
// 注意:这样不但销毁了会话中的数据,还同时销毁了会话本身
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
// 最后,销毁会话
session_destroy();
?>
Run code
Cut to clipboard
终结 Session
如果您希望删除某些 session 数据,可以使用 unset() 或 session_destroy() 函数。
unset() 函数用于释放指定的 session 变量:
<?php
unset($_SESSION['views']);
?>
您也可以通过 session_destroy() 函数彻底终结 session:
<?php
session_destroy();
?>
注释:session_destroy() 将重置 session,您将失去所有已存储的 session 数据。
Run code
Cut to clipboard
文章:Weiphp微信公众平台自定义菜单等开发 发表时间:2017-08-31, 10:34:11
1. 获取选中项: 获取选中项的Value值: $('select#sel option:selected').val(); 或者 $('select#sel').find('option:selected').val(); 获取选中项的Text值: $('select#seloption:selected').text(); 或者 $('select#sel').find('option:selected').text(); 2. 获取当前选中项的索引值: $('select#sel').get(0).selectedIndex; 3. 获取当前option的最大索引值: $('select#sel option:last').attr("index") 4. 获取DropdownList的长度: $('select#sel')[0].options.length; 或者 $('select#sel').get(0).options.length; 5. 设置第一个option为选中值: $('select#sel option:first').attr('selected','true') 或者 $('select#sel')[0].selectedIndex = 0; 6. 设置最后一个option为选中值: