2012-08-03 51 views
2

有沒有一種方法,我可以簡化此代碼:我可以簡化這個jQuery在哪裏尋找表單上的元素?

var topic_html = obj.$form.find("#select-topic").html(); 
var topic_val = obj.$form.find("#select-topic").val(); 
var topic_text = obj.$form.find("#select-topic option:selected").text(); 

我知道這是很乾淨,但有什麼辦法,我可避免的obj.$form.find.

+0

我覺得沒有任何的方式來簡化 – 2012-08-03 04:13:50

+0

也許更適合http://codereview.stackexchange.com – msanford 2012-08-03 04:14:56

+0

由於查找是通過標識真的是OBJ之間沒有什麼區別。$ form.find和$( '#選擇-主題')VAL()。 – 2012-08-03 04:15:08

回答

8

三個實例你不需要找選擇每次,將其緩存在一個變量中。

var topic = obj.$form.find("#select-topic"); 
var topic_html = topic.html(); 
var topic_val = topic.val(); 
var topic_text = topic.find("option:selected").text(); 
+0

我會在代碼中使用'var $ topic =',只是爲了提醒自己它是一個JQuery對象,但這絕對是一種方式。 – 2012-08-03 04:15:20

4

你正在通過它的id獲得一個對象 - 你爲什麼要做obj.$form.find

只是做$('#select-topic') - 除非你需要確保元素是一個孩子的形式嗎?

總之:

var select = $('#select-topic'); 
var topic_html = select.html(); 
var topic_val = select.val(); 
var topic_text = select.find('option:selected').text(); 

爲什麼你需要同樣的事情全部三個版本?

0

這是@ xdazz的答案的細微變化。我嘗試將其保留爲單個var關鍵字。

var topic = obj.$form.find("#select-topic"), 
    topic_html = topic.html(), 
    topic_val = topic.val(), 
    topic_text = topic.find("option:selected").text(); 
相關問題