JQuery对和DOM对象互转

它是轻量级的js库(压缩后只有21k) ,它兼
【菜科解读】
在网页设计中我们常常需要用到JS开发,Jquery是继prototype之后又一个优秀的Javascrīpt框架。
它是轻量级的js库(压缩后只有21k) ,它兼容CSS3
JQuery 1.6 下载 http://www.cr173.com//soft/26429.html
但会出理这样的一个问题就是有时一个 JQuery 对像需要用到 Html 中DOM的属性时我们因该在两者中如何来转换。
刚开始学习jQuery,可能一时会分不清楚哪些是jQuery对象,哪些是DOM对象。
至于DOM对象不多解释,我们接触的太多了,下面重点介绍一下jQuery,以及两者相互间的转换。
什么是jQuery对象? ---就是通过jQuery包装DOM对象后产生的对象。
jQuery对象是jQuery独有的,其可以使用jQuery里的方法。
比如: $("#test").html() 意思是指:获取ID为test的元素内的html代码。
其中html()是jQuery里的方法 这段代码等同于用DOM实现代码: document.getElementById("id").innerHTML; 虽然jQuery对象是包装DOM对象后产生的,但是jQuery无法使用DOM对象的任何方法,同理DOM对象也不能使用jQuery里的方法.乱使用会报错。
比如:$("#test").innerHTML、document.getElementById("id").html()之类的写法都是错误的。
还有一个要注意的是:用#id作为选择符取得的是jQuery对象与document.getElementById("id")得到的DOM对象,这两者并不等价。
请参看如下说的两者间的转换。
既然jQuery有区别但也有联系,那么jQuery对象与DOM对象也可以相互转换。
在再两者转换前首先我们给一个约定:如果一个获取的是 jQuery对象,那么我们在变量前面加上$,如:var $variab = jQuery对象;如果获取的是DOM对象,则与习惯普通一样:var variab = DOM对象;这么约定只是便于讲解与区别,实际使用中并不规定。
jQuery对象转成DOM对象: 两种转换方式将一个jQuery对象转换成DOM对象:[index]和.get(index); (1)jQuery对象是一个数据对象,可以通过[index]的方法,来得到相应的DOM对象。
如:var $v =$("#v") ; //jQuery对象 var v=$v[0]; //DOM对象 alert(v.checked) //检测这个checkbox是否被选中 (2)jQuery本身提供,通过.get(index)方法,得到相应的DOM对象 如:var $v=$("#v"); //jQuery对象 var v=$v.get(0); //DOM对象 alert(v.checked) //检测这个checkbox是否被选中 DOM对象转成jQuery对象: 对于已经是一个DOM对象,只需要用$()把DOM对象包装起来,就可以获得一个jQuery对象了。
$(DOM对象) 如:var v=document.getElementById("v"); //DOM对象 var $v=$(v); //jQuery对象 转换后,就可以任意使用jQuery的方法了。
通过以上方法,可以任意的相互转换jQuery对象和DOM对象。
需要再强调注意的是:DOM对象才能使用DOM中的方法,jQuery对象是不可以用DOM中的方法。
jQuery对象就是通过jQuery包装DOM对象后产生的对象。
jQuery对象是jQuery独有的,其可以使用jQuery里的方法,但是不能使用DOM的方法;例如$(”#img”).attr(”src”,”test.jpg”); 这里的$(”#img”)就是jQuery对象; DOM对象就是Javascript固有的一些对象操作。
DOM对象能使用Javascript固有的方法,但是不能使用jQuery里的方法。
例如:document.getElementById(”img”).src=”test.jpg”;这里的document.getElementById(”img”)就是DOM对象; $(”#img”).attr(”src”,”test.jpg”); 和document.getElementById(”img”).src=”test.jpg”;是等价的,是正确的,但是$(”#img”).src=”test.jpg”;或者document.getElementById(”img”).attr(”src”,”test.jpg”); 都是错误的。
在说一个例子:就是this,我在写jQuery的时候经常这样写:this.attr(”src”,”test.jpg”); 可是就是出错。
其实this是DOM对象,而.attr(”src”,”test.jpg”) 是jQuery方法,所以出错了。
要解决这个问题就要将DOM对象转换成jQuery对象,例如$(this).attr(”src”,”test.jpg”); 1.DOM对象转成jQuery对象: 对于已经是一个DOM对象,只需要用$()把DOM对象包装起来,就可以获得一个jQuery对象了。
$(DOM对象) 如:var v=document.getElementById(”v”); //DOM对象 var $v=$(v); //jQuery对象 转换后,就可以任意使用jQuery的方法了。
2.jQuery对象转成DOM对象: 两种转换方式将一个jQuery对象转换成DOM对象:[index]和.get(index); (1)jQuery对象是一个数据对象,可以通过[index]的方法,来得到相应的DOM对象。
如:var $v =$(”#v”) ; //jQuery对象 var v=$v[0]; //DOM对象 alert(v.checked) //检测这个checkbox是否被选中 (2)jQuery本身提供,通过.get(index)方法,得到相应的DOM对象 如:var $v=$(”#v”); //jQuery对象 var v=$v.get(0); //DOM对象 alert(v.checked) //检测这个checkbox是否被选中
JQuery,对和,DOM,对象,互转,在,网页设计,中,我使用jquery和MySql创建一个ajax关键词数据搜索
点击搜索默认显示所有的结果输入A之后显示的搜索结果输入 p之后显示的搜索结果没有找到相关的搜索词页面演示-点击下面的搜索按钮搜索数据文件结构 主要用到几个文件 index.php首页 dbcon.php数据库连接文件 search.php搜索处理页面第一步创建一个ajax_search的数据库,紧接着创建一个ajax_search表CREATE TABLE `ajax_search` ( `id` int(11) NOT NULL auto_increment, `FirstName` varchar(50) NOT NULL, `LastName` varchar(50) NOT NULL, `Age` int(11) NOT NULL, `Hometown` varchar(50) NOT NULL, `Job` varchar(50) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;HTML :index.php--程序主页面DB Connect:dbcon.php--数据库连接文件 ?php //数据库连接函数 $link = mysql_connect(‘localhost‘, ‘root‘, ‘你的密码‘); mysql_select_db(‘ajax_demo‘,$link);//选择数据库连接?>搜索结果页面search.php代码如下 ?phpfunction checkValues($value) // 使用此函数对所有这些值都要检查防止 sql 注入和跨站点脚本 //除去字符串开头和末尾的空格或其他字符 $value = trim($value); // Stripslashes if (get_magic_quotes_gpc()) { //删除由 addslashes() 函数添加的反斜杠,该函数用于清理从数据库或 HTML 表单中取回的数据。
$value = stripslashes($value); //转换所有的 , 字符 $value = strtr($value,array_flip(get_html_translation_table(HTML_ENTITIES))); // 剥去 HTML的标签 $value = strip_tags($value); // 引用值 $value = mysql_real_escape_string($value); return $value;include("dbcon.php");//加载数据库连接文件$rec = checkValues($_REQUEST[‘val‘]);//获取table内容if($rec) $sql = "select * from ajax_search where FirstName like ‘%$rec%‘ or LastName like ‘%$rec%‘ or Age like ‘%$rec%‘ or Hometown like ‘%$rec%‘"; $sql = "select * from ajax_search";$rsd = mysql_query($sql);//查询这条语句$total = mysql_num_rows($rsd);//返回结果集中行的数目if($total==0){ echo ‘No Record Found !‘;}?>checkValues函数过滤字符串防止sql注入和跨站点脚本攻击,mysql_query($sql);用来查询语句,mysql_fetch_assoc()用来循环输出结果,怎么样是不是很简单,如果你的项目有需要,可以直接使用这个代码。
使用,jquery,和,MySql,创建,一个,ajax,关
Android开发使用Dom从网络端解析xml文件
首先我们创建一个类,用来实现http请求和xml文件节点的获取public class XMLParser { // constructor public XMLParser() { * Getting XML from URL making HTTP request * @param url string * */ public String getXmlFromUrl(String url) { String xml = null; try { // defaultHttpClient DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url); HttpResponse httpResponse = httpClient.execute(httpPost); HttpEntity httpEntity = httpResponse.getEntity(); xml = EntityUtils.toString(httpEntity,"utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); // return XML return xml; * Getting XML DOM element * @param XML string * */ public Document getDomElement(String xml){ Document doc = null; DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); try { DocumentBuilder db = dbf.newDocumentBuilder(); InputSource is = new InputSource(); is.setCharacterStream(new StringReader(xml)); doc = db.parse(is); } catch (ParserConfigurationException e) { Log.e("Error: ", e.getMessage()); return null; } catch (SAXException e) { Log.e("Error: ", e.getMessage()); return null; } catch (IOException e) { Log.e("Error: ", e.getMessage()); return null; return doc; /** Getting node value * @param elem element public final String getElementValue( Node elem ) { Node child; if( elem != null){ if (elem.hasChildNodes()){ for( child = elem.getFirstChild(); child != null; child = child.getNextSibling() ){ if( child.getNodeType() == Node.TEXT_NODE ){ return child.getNodeValue(); return ""; * Getting node value * @param Element node * @param key string * */ public String getValue(Element item, String str) { NodeList n = item.getElementsByTagName(str); return this.getElementValue(n.item(0));}然后我们创建一个Activity继承与ListActivity,在这个Activity中定义一些节点。
public class AndroidXMLParsingActivity extends ListActivity { // All static variables static final String URL = "http://10.0.2.2/biyeshejidata/menu.xml"; // XML node keys static final String KEY_ITEM = "item"; // parent node static final String KEY_ID = "id"; static final String KEY_NAME = "name"; static final String KEY_COST = "cost"; static final String KEY_DESC = "description"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ArrayList> menuItems = new ArrayList>(); XMLParser parser = new XMLParser(); String xml = parser.getXmlFromUrl(URL); // getting XML Document doc = parser.getDomElement(xml); // getting DOM element NodeList nl = doc.getElementsByTagName(KEY_ITEM); // looping through all item nodes for (int i = 0; i map = new HashMap(); Element e = (Element) nl.item(i); // adding each child node to HashMap key => value map.put(KEY_ID, parser.getValue(e, KEY_ID)); map.put(KEY_NAME, parser.getValue(e, KEY_NAME)); map.put(KEY_COST, "Rs." + parser.getValue(e, KEY_COST)); map.put(KEY_DESC, parser.getValue(e, KEY_DESC)); // adding HashList to ArrayList menuItems.add(map); // Adding menuItems to ListView ListAdapter adapter = new SimpleAdapter(this, menuItems, R.layout.list_item, new String[] { KEY_NAME, KEY_DESC, KEY_COST }, new int[] { R.id.name, R.id.desciption, R.id.cost }); setListAdapter(adapter); // selecting single ListView item ListView lv = getListView(); lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView ?> parent, View view, int position, long id) { // getting values from selected ListItem String name = ((TextView) view.findViewById(R.id.name)).getText().toString(); String cost = ((TextView) view.findViewById(R.id.cost)).getText().toString(); String description = ((TextView) view.findViewById(R.id.desciption)).getText().toString(); // Starting new intent Intent in = new Intent(getApplicationContext(), SingleMenuItemActivity.class); in.putExtra(KEY_NAME, name); in.putExtra(KEY_COST, cost); in.putExtra(KEY_DESC, description); startActivity(in);}最后实现点击进入一个新的页面的Activity。
public class SingleMenuItemActivity extends Activity { // XML node keys static final String KEY_NAME = "name"; static final String KEY_COST = "cost"; static final String KEY_DESC = "description"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.single_list_item); // getting intent data Intent in = getIntent(); // Get XML values from previous intent String name = in.getStringExtra(KEY_NAME); String cost = in.getStringExtra(KEY_COST); String description = in.getStringExtra(KEY_DESC); // Displaying all values on the screen TextView lblName = (TextView) findViewById(R.id.name_label); TextView lblCost = (TextView) findViewById(R.id.cost_label); TextView lblDesc = (TextView) findViewById(R.id.description_label); lblName.setText(name); lblCost.setText(cost); lblDesc.setText(description);} Android,开发,使用,Dom,从,网络,端,解析,xm