2009-07-13 3 views
29

में यूएल से LI निकालें हाइपरलिंक के साथ मैं एक बिना क्रम वाली सूची है। मैंने कक्षा आइटम की क्लिक इवेंट को संभाला है, जहां मैं निकालने का प्रयास करता हूं लेकिन मुझे लगता है कि यह काम नहीं कर रहा है क्योंकि मैं <li> को हटा नहीं सकता क्योंकि एक बच्चा इसे बुला रहा है?jQuery LI

$('.itemDelete').live("click", function() { 
      var id = $(this).parent().get(0).id; 


      $("#" + id).remove(); 

     }); 

सबसे अच्छा तरीका क्या है?

+2

आपकी आईडी अमान्य हैं - आईडी – Greg

+0

@Jon के साथ शुरू नहीं हो सकती हैं। आपका प्रश्न बहुत मददगार है –

उत्तर

56

आप jQuery का नवीनतम संस्करण का उपयोग कर रहे मान लिया जाये कि: (। parent हालांकि काम करता है यहाँ भी) parent से

$('#sortable').on('click', '.itemDelete', function() { 
    $(this).closest('li').remove(); 
}); 

closest थोड़ा और अधिक गतिशील है यह li कि वर्तमान तत्व के सबसे करीब है हो जाता है , संरचना में ऊपर।

+0

डेमो पर [jsfiddle] (https://jsfiddle.net/) पर पेस्ट करने के लिए आईडी भूल गई है। quk9w4qv /) – aloisdg

6

आप कैसे के बारे में बस

$(this).parent().remove(); 
7

वास्तव में, जिस तरह से आप अब के रूप में यह है, id अपरिभाषित होने जा रही है अपने <li> रों

पर आईडी की जरूरत नहीं है क्योंकि में से कोई भी ली के पास आईडी हैं।

क्यों न सिर्फ

$(this).parent().remove() 

भी करते हैं, मत भूलना झूठी वापस जाने के लिए।

+0

मेरे पास मूल पोस्ट – Jon

0

क्या समापन मेरे लिए काम: उपसर्ग अपने आईडी एक स्ट्रिंग के साथ जिम्मेदार बताते हैं या अंडरस्कोर (के रूप में अन्य लोगों ने बताया है)

के बाद से jQuery मोबाइल की तरह चौखटे की आवश्यकता है कि आईडी सिर्फ एक में सभी पृष्ठों पर अद्वितीय (नहीं हो पेज, मैं पेज नाम, अंडरस्कोर, और संख्यात्मक आईडी के साथ उपसर्ग करता हूं जो मुझे डेटाबेस में रिकॉर्ड्स तक पहुंचने देता है।

कक्षा या उल नियंत्रण के लिए बाध्य करने के बजाय, 'ऑन' का उपयोग करने के लिए 'ऑन' का उपयोग करें अभिभावक सूची:

$('#sortable').on('dblclick', 'li' function() { 
     aval = $(this).attr('id').match(/\d+/g); // only want the numbers... 
     id = aval[0]; 
     name = $(this).text(); // in case you need these for a post... 
     li = $(this); // so we can remove it from the list after the 'this' object changes inside the ajax call... 
     // make an ajax call to the server 
     var jqxhr = $.post("somepage.php", {name: name, id: id}, 
      function(data) { 
      li.remove(); 
      $("#sortable").listview("refresh"); 
    },'json').fail(function() { alert("error"); }); 
    return false; // preventDefault doesn't seem to work as well... 
});