扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
我给你写一个jQuery遍历HTML元素的案例,自己应用到代码上吧
成都创新互联公司是一家专注于成都网站设计、做网站与策划设计,银川网站建设哪家好?成都创新互联公司做网站,专注于网站建设十余年,网设计领域的专业建站公司;建站业务涵盖:银川等地区。银川做网站价格咨询:18982081108
div id="listcontact"
ul
lia href="#"·账户余额/a/li
lia href="#"·账户充值/a/li
lia href="#"·账户明细/a/li
/ul
/div
script
var Aobj=$("#listcontact li");
for(var a=0;aAobj.length;a++){
alert(Aobj[a].innerHTML);
}
/script
这是我空间自己整理的关于jQuery选择器的文章 有兴趣可参考下
和普通js文件一样导入就可以用了,不用安装
script type="text/javascript" src="./jquery-1.3.2.js"/script
scr=""中间为jquery的js文件的路径
JQuery中的选择器完全继承了CSS得风格。在学习JQuery选择器之前首先要了解CSS常用选择器。
虽然JQuey选择器的写法与CSS选择器的写法十分相似,只不过两者的作用效果不用,CSS选择器找到元素后是添加样式,而JQuery选择器找到元素后是添加行为。
CSS获取到元素的代码如下:
.demo{
... //给class为demo的元素添加样式。
}
JQuery获取到的元素的代码如下:
$(".demo").click(function(){
.... //给class为demo的元素添加行为。
!DOCTYPE HTML
html lang="en"
head
meta http-equiv = "X-UA-Compatible" content = "IE=edge,chrome=1" /
meta http-equiv="Content-Type" content="text/html;charset=UTF-8"
titletest/title
link rel="stylesheet" href="css.css" type="text/css" media="screen"
script src=""/script
/head
body
style type="text/css"table tr td{border:1px solid #ddd;padding:15px;text-align: center;background: #f3f3f3}input{text-align: center;}/style
div/div
div/div
table id="t"
tr
td/tdtdname/tdtd单价/tdtd数量/tdtd总价/tdtddel/td
/tr
tr
td1/tdtdhtc/tdtd¥span1395.00/span/tdtdinput type='button' value='-' onclick='less(this)'input type='text' style='width:30px' name='num' value='1'input type='button' value='+' onclick='more(this)'/tdtdspan/span/tdtdspan onclick='del(this)'del/span/td
/tr
tr
td2/tdtdapple/tdtd¥span5555.00/span/tdtdinput type='button' value='-' onclick='less(this)'input type='text' style='width:30px' name='num' value='1'input type='button' value='+' onclick='more(this)'/tdtdspan/span/tdtdspan onclick='del(this)'del/span/td
/tr
tr
td3/tdtdMac/tdtd¥span9999/span/tdtdinput type='button' value='-' onclick='less(this)'input type='text' style='width:30px' name='num' value='1'input type='button' value='+' onclick='more(this)'/tdtdspan/span/tdtdspan onclick='del(this)'del/span/td
/tr
tr
td COLSPAN='6'合计:¥span/span/td
/tr
/table
input type="button" value="加一行" onclick="tr_more()"
script type="text/javascript"
$(function(){
heji();
})
function heji(){
var tr=$("#t").find("tr").length;
var total=0;
for(i=1;itr-1;i++){//略过第一行和最后一行
var price=$('table#t tr:eq('+i+') td:eq(2)').find('span').html();
var num=$('table#t tr:eq('+i+') td:eq(3)').find('input:eq(1)').val();
$('table#t tr:eq('+i+') td:eq(4)').find('span').html('¥'+eval(price*num));
total=eval(total+eval(price*num));
}
$('table#t tr:eq('+eval(tr-1)+') td').find('span').html(total);
}
function less(e){
var num=$(e).parent().find('input:eq(1)').val();
if(num=0){num=0}else{num--}
$(e).parent().find('input:eq(1)').val(num);
heji();
}
function more(e){
var num=$(e).parent().find('input:eq(1)').val();
if(num0){num=0}else{num++}
$(e).parent().find('input:eq(1)').val(num);
heji();
}
function del(e){
$(e).parent().parent().remove();
heji();
}
function tr_more(){
var tr=$("#t").find("tr").length;
var trr=tr-2;
var newRow = "trtd"+eval(tr-1)+"/tdtdMac/tdtd¥span9999/span/tdtdinput type='button' value='-' onclick='less(this)'input type='text' style='width:30px' name='num' value='1'input type='button' value='+' onclick='more(this)'/tdtdspan/span/tdtdspan onclick='del(this)'del/span/td/tr";
$('table#t tr:eq('+trr+')').after(newRow);
heji();
}
/script
/body
/html
Android的ProgressDialog效果就是典型的android实现jquery效果的应用。
首先需要创建ProgressDialog对象,然后使用线程控制进度条显示,具体源代码:
package com.yarin.android.TestOnPDialog;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class PDialog extends Activity
{
private Button mButton01,mButton02;
int m_count = 0;
//声明进度条对话框
ProgressDialog m_pDialog;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//得到按钮对象
mButton01 = (Button)findViewById(R.id.Button01);
mButton02 = (Button)findViewById(R.id.Button02);
//设置mButton01的事件监听
mButton01.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
//创建ProgressDialog对象
m_pDialog = new ProgressDialog(PDialog.this);
// 设置进度条风格,风格为圆形,旋转的
m_pDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
// 设置ProgressDialog 标题
m_pDialog.setTitle("提示");
// 设置ProgressDialog 提示信息
m_pDialog.setMessage("这是一个圆形进度条对话框");
// 设置ProgressDialog 标题图标
m_pDialog.setIcon(R.drawable.img1);
// 设置ProgressDialog 的进度条是否不明确
m_pDialog.setIndeterminate(false);
// 设置ProgressDialog 是否可以按退回按键取消
m_pDialog.setCancelable(true);
// 设置ProgressDialog 的一个Button
m_pDialog.setButton("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int i)
{
//点击“确定按钮”取消对话框
dialog.cancel();
}
});
// 让ProgressDialog显示
m_pDialog.show();
}
});
//设置mButton02的事件监听
mButton02.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
m_count = 0;
// 创建ProgressDialog对象
m_pDialog = new ProgressDialog(PDialog.this);
// 设置进度条风格,风格为长形
m_pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
// 设置ProgressDialog 标题
m_pDialog.setTitle("提示");
// 设置ProgressDialog 提示信息
m_pDialog.setMessage("这是一个长形对话框进度条");
// 设置ProgressDialog 标题图标
m_pDialog.setIcon(R.drawable.img2);
// 设置ProgressDialog 进度条进度
m_pDialog.setProgress(100);
// 设置ProgressDialog 的进度条是否不明确
m_pDialog.setIndeterminate(false);
// 设置ProgressDialog 是否可以按退回按键取消
m_pDialog.setCancelable(true);
// 让ProgressDialog显示
m_pDialog.show();
new Thread()
{
public void run()
{
try
{
while (m_count = 100)
{
// 由线程来控制进度。
m_pDialog.setProgress(m_count++);
Thread.sleep(100);
}
m_pDialog.cancel();
}
catch (InterruptedException e)
{
m_pDialog.cancel();
}
}
}.start();
}
});
}
}
这段时间在学习研究jQuery源码,受益于jQuery日益发展强大,研究jQuery的大牛越来越多,学习的资料也比前两年好找了,有很多非常不错的资源,如高云的jQuery1.6.1源码分析系列。这些教程非常细致的分析了jQuery内部原理和实现方式,对学习和理解jQuery有非常大的帮助。但是个人认为很多教程对jQuery的整体结果把握不足,本人试图从整体来阐述一下jQuery的内部实现。
大家知道,调用jQuery有两种方式,一种是高级的实现,通过传递一个参数实现DOM选择,如通过$(“h1″)选择所有的h1元素,第二种是较为低级的实现,如果通过$.ajax实现ajax的操作。那么,这两种方式到底有何不同?用typeof函数检测$(‘h1′)和$.ajax,类型分别为object和function,稍微学过jQuery的都知道或者听过过,前者返回的是一个jQuery对象,那么jQuery对象是什么,它和jQuery是什么关系呢?我们先来通过for(var
i
in
$(”))
document.write(i+”
:::”+$(“”)[i]+””);打印一下jQuery对象的属性和对应的值,可以看到它有100多个属性,通过console输入$(“*”)可以看到大部分属性是继承自jQuery原型的属性,jQuery对象实际上是这样一个对象:
所以我们来推测,jQuery的实现可能是类似这样的:
function
jQuery(){
this[0]="Some
DOM
Element";
this[1]="Some
DOM
Element";
this[2]="Some
DOM
Element";
this.length=3;
this.prevObject="Some
Object";
this.context="Some
Object";
this.selector="Some
selector";
}
jQuery.prototype={
get:function(){},
each:function(){},
......
}
这些代码通过new操作符就就能创建出拥有上述属性的jQuery对象,但是实际上我们调用jQuery创建jQuery对象时并没有使用new操作符,这是如何实现的呢?来看jQuery的实现:
var
jQuery
=
function(
selector,
context
)
{
//
The
jQuery
object
is
actually
just
the
init
constructor
'enhanced'
return
new
jQuery.fn.init(
selector,
context,
rootjQuery
);
}
jQuery.fn=jQuery.prototype={
jquery:
core_version,
init:function(selector,context){
//some
code
return
this;
}
//some
code
there
//......
}
jQuery.fn.init.prototype=jQuery.fn;
这里有几点做得非常巧妙的地方,第一点是通过jQuery原型属性的init方法来创建对象来达到不用new创建对象的目的,第二点是对init方法内this指向的处理。我们知道,通过调用init返回一个jQuery的实例,那么这个实例就必须要继承jQuery.prototype的属性,那么init里面这个this,
就继承jQuery.prototype的属性。但是init里面的this,受制于作用域的限制,并不能访问jQuery.prototype其它的属性,jQuery通过一句'jQuery.fn.init.prototype=jQuery.fn'把它的原型指向jQuery.fn,这样以来,init产生的jQuery对象就拥有了jQuery.fn的属性。
到这里,一个jQuery的基本原型就浮出水面了。这里有两个对象,一个是jQuery这个构造函数,另外一个是这个构造函数产生的对象(我们称之为jQuery对象,它和普通对象没有什么区别),
如下关系图:
可以看到jQuery构造函数和jQuery.prototype均有各自的属性和方法,两者的调用方法各不一样,这两个对象都有一个extend方法,都是用来扩展自身的属性和方法,在jQuery内部,extend的实现实际是靠一样的代码,
将在后面的源码分析中做以详细的分析。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流