2010-06-11 14 views
5

मैं कुछ घटनाओंjquery के साथ बनाए गए तत्व को कैसे हटाएं?

$('body').append(
tmp= $('<div id="tmp"></div>') 
); 

$('<div id="close" />').appendTo("#tmp"); 
$('<div id="box-results" />').appendTo('#tmp'); 

इस तीन तत्वों सामान्य रूप से बनाई गई हैं और मेरे डोम को जोड़ा गया के बाद तीन तत्व बनाने के लिए jQuery में कोड के इस ब्लॉक बारे में है, लेकिन मैं उन्हें इस तरह की कुछ समारोह के साथ निकालना चाहते हैं:

$("#close").click(function(e){ 

e.preventDefault(); 
$("#tmp").remove(); 
//$("#overlay").remove(); 
}); 

और जब मैं बंद div नोटिंग पर क्लिक करता हूं! मेरे कोड में क्या गलत है?

यहाँ ऑनलाइन उदाहरण है: mymagazine.ir/index.php/main/detail/36 - कृपया खोजने के साइट में वाक्य "यहाँ jQuery मुद्दा है" क्योंकि साइट भाषा फारसी

उत्तर

11

है क्या आप में तत्व सम्मिलित के बाद # बंद करें पर क्लिक हैंडलर जोड़ने की जरूरत दस्तावेज़।

अनुरोधित डेमो प्रदान करना संपादित करें; ff36 में परीक्षण किया:

<html> 
<head> 
<title>whatever</title> 
<style type="text/css"> 
    div { 
    border: 1px solid black; 
    padding: 0.3em; 
    } 
</style> 
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() 
    { 
    $('body').append($('<div id="tmp"/>')); 
    $('<div id="close">click me</div>').appendTo("#tmp"); 
    $('<div id="box-results">contents</div>').appendTo('#tmp'); 
    $('#close').bind('click', function() 
    { 
     $('#tmp').remove(); 
     return false; 
    }); 
    }); 
</script> 
</head> 
<body> 
</body> 
</html> 

संपादित

परिवर्तन

$.ajax({ 
    ... 
    success: function() 
    { 
     $('<div id="close"/>').appendTo($('#tmp')); 
    } 
}); 
$('#close').click(function (e) ...); 

से अपने प्लगइन के कोड

$.ajax({ 
    ... 
    success: function() 
    { 
     $('<div id="close"/>') 
      .click(function (e) ...) 
      .appendTo($('#tmp')) 
     ; 
    } 
}); 
+0

क्या आप मुझे कुछ कोड दिखा सकता है? आपका मतलब $ ("# बंद") है। लाइव ('क्लिक करें', फ़ंक्शन() {}); अगर आपका मतलब है कि यह या तो काम नहीं कर रहा है। – mehdi

+0

यह काम नहीं कर रहा है। क्या आप इसका परीक्षण करते हैं? क्या यह आपके लिए काम कर रहा है ?! – mehdi

+0

@ मेहदी: उसका उत्तर मेरे लिए पूरी तरह से काम करता है: http://bit.ly/aKEvbh – Matt

2

आप क्लिक करने के बजाय लाइव विधि का उपयोग करना चाहिए करने के लिए। यह आप live() विधि की जरूरत है, आप जोड़ना/उनके व्यवहार

$("element").live("click", function() { /*do things*/ }); 
3

बदले बिना तत्वों को दूर क्योंकि आईडी #tmp और साथ तत्वों डायनामिक रूप से तैयार कर रहे हैं की अनुमति देगा आप सीधे उन पर click उपयोग नहीं कर सकते, बजाय:

$("#close").live('click', function(e){  
    $("#tmp").remove(); 
    return false; 
}); 

Live() विवरण:

सभी तत्वों के लिए ईवेंट में एक हैंडलर संलग्न करें जो मौजूदा चयनकर्ता से मेल खाता है, जो अब या भविष्य में है।

जैसा कि देखा जा सकता है कि आपका तत्व गतिशील रूप से (भविष्य) बनाया गया है जब पेज लोड नहीं हुआ था।

More Info Here

+0

लाइव अवमूल्यन है – Rahul

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