好久都沒有接觸Jquery了。以前學過一段時間Jquery,這些天又溫習了起來。Jquery的語句很美。用Js幾行甚至要十幾行才能做到,用Jquery一行到幾行就可以做到了。雖然他犧牲了一點時間效率,但就對於簡單的網頁腳本處理或者簡ajax處理,犧牲的這一丁點效率真是不足為掛。
但Jquery還是有一些問題得用Js來解決的。說說我這些天遇到的這個問題:在Jquery里append一個button按扭后,無法用Jquery對這個按扭進行監聽。
下面是具體的代碼,發現alert("test監聽到木有");這句沒有起到作用。
<head> <script src="js/jquery-1.4.2.min.js" type="text/javascript"></script> <script type="text/javascript"> $(function () { //加載按扭 $("#loadBtn").click(function () { $("#comUL").append("這是一個按扭"); $("#comUL").append("<input type='button' id='btn1' value='按扭' />"); }); //對加載的按扭進行監聽 $("#btn1").click(function () { alert("test監聽到木有"); }); }); </script> </head> <body> <ul id="comUL"> </ul> <input type="button" id="loadBtn" value="加載按扭" />
那么怎么用js實現給這個按扭加一個方法呢?
其實很簡單,這句$("#comUL").append("<input type='button' id='btn1' value='按扭' />");里面再加一個onclick,給onclick里加一個方法。具體代碼如下:
<head> <script src="js/jquery-1.4.2.min.js" type="text/javascript"></script> <script type="text/javascript"> $(function () { //加載按扭 $("#loadBtn").click(function () { $("#comUL").append("這是一個按扭"); $("#comUL").append("<input type='button' id='btn1' value='按扭' onclick='test()' />"); }); }); function test() { alert("test"); } </script> </head> <body> <ul id="comUL"> </ul> <input type="button" id="loadBtn" value="加載按扭" /> </body>
可是我們實際應用中,可能需要獲取按扭里面的屬性值,例如獲取id的屬性值,那怎么做?可以在onclick屬性的方法里把this只傳遞過去,像這樣onclick='test(this)' 具體代碼如下:
</head> <script src="js/jquery-1.4.2.min.js" type="text/javascript"></script> <script type="text/javascript"> $(function () { //加載按扭 $("#loadBtn").click(function () { $("#comUL").append("這是一個按扭"); $("#comUL").append("<input type='button' id='btn1' value='按扭' onclick='test(this)' />"); }); }); function test(e) { alert(e.id); } </script> </head> <body> <ul id="comUL"> </ul> <input type="button" id="loadBtn" value="加載按扭" /> <body>
可是我們實際上有時候覺的需要在test方法里使用jquery來操作比較方便,那么怎么做?這時我們可以把onclick屬性方法里傳遞過來的this進行封裝成jquery的this,就可以實現了用Jquery的操作。具體代碼如下:
</head> <script src="js/jquery-1.4.2.min.js" type="text/javascript"></script> <script type="text/javascript"> $(function () { //加載按扭 $("#loadBtn").click(function () { $("#comUL").append("這是一個按扭"); $("#comUL").append("<input type='button' id='btn1' value='按扭' onclick='test(this)' />"); }); }); function test(e) { alert($(e).attr('id')); $(e).hide(); } </script> </head> <body> <ul id="comUL"> </ul> <input type="button" id="loadBtn" value="加載按扭" /> </body>
好了,這個小問題就解決了!但我卻折騰好一會。