2012-06-07 10 views
28

पर कॉलिंग फ़ंक्शन ठीक है, सामान्यतः मैं खुद को jquery का मध्यवर्ती उपयोगकर्ता मानता हूं, लेकिन यह एक बहुत ही नोब मुद्दा जैसा लगता है कि मुझे बिल्कुल यकीन नहीं है कि कोड कैसे करें।jquery selector

मेरे पास एक div है कि मैं इसके खिलाफ एक फ़ंक्शन चलाने के लिए चाहता हूं। एक ही रास्ता मैं ऐसा करने के तरीके के बारे में पता कर रहा हूँ कुछ की तरह है ...

$("#divname").each(function(){ 
    dostuff(); 
}); 

इस में कुछ अधिक परिश्रम की तरह लगता है जब मुझे पता है कि वहाँ केवल एक ही तत्व हो जाएगा। मैंने यह कोशिश की ...

$("#divname", function(){ 
    console.log($(this)); 
}); 

... लेकिन यह पूरे डोम को लिखता है। मैं सिर्फ इस तत्व पर फ़ंक्शन चलाने के लिए चाहता हूं। मैं उसको कैसे करू?

+1

'doStuff ($ (" # divname ")); '? – Sampson

+0

@ जोनाथन सैम्पसन। लोएल, मेरा जवाब बिल्कुल वही होगा यदि 30 वर्ण उत्तर सीमा नहीं थी ... :) – gdoron

+0

@gdoron यह वास्तव में सबसे अच्छा तरीका नहीं है। यह आपको अन्य jQuery पुनरावृत्तियों में बाद में कॉलबैक के रूप में 'doStuff' का उपयोग करने से रोकता है क्योंकि आप 'this' के बजाय पैरामीटर का संदर्भ लेते हैं। विवरण के लिए मेरा जवाब देखें। – Sampson

उत्तर

17

आप को बनाए रखने के हैं एचटीएमएल डोम में प्रत्येक तत्व का मतलब है कि कोई भी दो तत्व एक ही id है अद्वितीय id है, तो $('#divname') हमेशा एक ही तत्व लौट सकते हैं और $('#divname').each() एक बार चलेंगे। एक से अधिक नहीं।

अब आपके मामले में आप चाहते हैं की तरह

dosomething($('#divname')); 

उदाहरण के लिए कुछ:

function doSomething(el) { 
    el.append('<span>hello</span>'); 
} 

doSomething($('#divname')); 

DEMO

22

आप समारोह call चाहिए अपनी वस्तु के रूप में में अपने तत्व गुजर:

function doStuff() { 
    alert($(this).html()); 
} 

doStuff.call($("#foo")[0]); 

तरीके के कारण करने के लिए हम बनाया गया है और doStuff फोन, हम अभी भी यह .each पर एक कॉलबैक के रूप में उपयोग कर सकते हैं:

$(".bar").each(doStuff); 

फिडल: http://jsfiddle.net/jonathansampson/WuyJc/

संबंधित मुद्दे