Svázat kliknutí na dynamický tlačítko s jQuery?

hlasů
1

Chci vytvořit tlačítko, které má jQuery klikněte na mouchu. Poté, co uživatel se děje a stiskněte tlačítko Chci zničit tlačítko a klikněte jQuery až do času musím to znovu.

Nejsem si jistý, jak to udělat v jQuery. Vím, že jQuery.liveje možnost, ale nejsem si jistý, jestli by to bylo lepší nebo horší než cestou chci to udělat.

Položena 27/08/2009 v 04:33
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
2

Žít bude fungovat v pohodě. Pokud byste chtěli, aby se zabránilo používání živě, můžete zapojit až na nové tlačítko, jak si jej přidat do DOM.

function addNewButton() {
  $("sweet_selector_here").append("<input type='button' id='sweetness' value='press me, i am awesome' />");
  $("#sweetness").click(function() {
    $(this).remove();
  });
}

S živou se stane toto:

function addNewButton() {
  $("sweet_selector_here").append("<input type='button' id='sweetness' value='press me, i am awesome' />");
}

$("#sweetness").live("click", function() {
  $(this).remove();
});
Odpovězeno 27/08/2009 v 04:45
zdroj uživatelem

hlasů
0

Omlouvám se, že psát na takovou starou a zodpovězenou otázku. Měl jsem podobný problém a tato odpověď mi pomohlo, ale nedostal docela mě tam. Po pokusu a omylu ... Tady je můj praktickým řešením pro přidávání oblastí na webové stránky a jejich odstranění. Používám ho s dynamickými poli formuláře, ale vaše potřeby se mohou lišit.

Zde je část formuláře ve statické části stránky.

<fieldset>
  <legend>Email-tauluun</legend>
    <a class="button_ajax email-add">Add new area</a>
    <p>
      <span class="email_original_area">
        <label>Email:
          <input type="text" name="emails[]" id="email0" />
        </label>
      </span>

      <!--Below we add some more areas-->
      <span id="email_add_area"></span>
    </p>
</fieldset>

Pak musíme některé funkce JavaScriptu. Tyhle používat jQuery.

<script type="text/javascript">

//we need a counter for dynamic fields
var cnt=0;

$(document).ready(function(){
  $('.email-add').click(function(){

  cnt += 1; //let's count...

  $('#email_add_area').append(
    '<span class="dynExtra"><br /><label>Email: ' +
    '<input type="text" name="emails[]" id="email' + cnt + '" /></label>' +
    '</span>'
  );

    //this function creates a button for newly created area
    //must be done after the creation of the area
    addRemover();
  });
});

function addRemover() {
  //appends remove button to the last created area
  $('<a class="button_ajax dynExtra-clear" name="dynExtra-clear">Remove area ' + cnt + '</a>').appendTo('#email_add_area');

  //remove the clicked button and it's previous sibling
  $('.dynExtra-clear').click(function(){
  $(this).prev().remove();
  $(this).remove();
  });
}

</script>

Doufejme, že to pomůže někdo, a já jsem neměl nic zapomenout.

Odpovězeno 22/02/2012 v 19:44
zdroj uživatelem

hlasů
0

To by mělo fungovat. Změnu HTML v řetězcích příslušně:

   $('#targetdiv').append( $("<div>foobar</div>").click( function(evt) { $(this).remove(); }))

Zde je ukázka stránky zobrazující ji v akci.

Odpovězeno 27/08/2009 v 04:41
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more