2013-06-08 5 views
0

Я использую плагин диалога JQuery UI, чтобы отобразить окно подтверждения для удаления соответствующего span следующим образом. Вот мой JS код:Выберите несколько элементов с тем же классом

$("#dialog-stergelu").dialog({ 
     autoOpen: false, 
     bgiframe: true, 
     resizable: false, 
     width: 400, 
     modal: true, 
     overlay: { 
      backgroundColor: '#000', 
      opacity: 0.5 
     }, 
     buttons: { 
      'Sterge': function() { 
        window.location = $('.opener').attr('confirm'); 
      }, 
      'Anuleaza': function() { 
         $(this).dialog('close'); 
       } 
     } 
    }); 
    $('.opener').click(function() { 
     $('#dialog-stergelu').dialog('open'); 
    }); 

Вот HTML:

<div id="dialog-stergelu" title="Stergeti acest raport ? "> 
    <p> 
     <span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 20px 0;"> </span>Chiar doriti sa stergeti acesta lucrare ? (Apasati "Anuleaza" pentru anularea comenzi) 
    </p> 
</div> 
<span class="opener" confirm="delete.php?id=213115">Delete</span> 
<span class="opener" confirm="delete.php?id=22314">Delete</span> 
<span class="opener" confirm="delete.php?id=222111">Delete</span> 
<span class="opener" confirm="delete.php?id=215231">Delete</span> 
<span class="opener" confirm="delete.php?id=223151">Delete</span> 

Я хочу, чтобы получить атр confirm от щелкнули span. Сейчас он получает только первый.

+0

@passionateCoder - вопрос _is_ на английском языке. – nnnnnn

ответ

1

Вы можете попробовать хранить URL в data из $("#dialog-stergelu") элемента, как это, а затем открыть его. Как это:

$('.opener').click(function() { 
    var url= $(this).attr("confirm"); //really, why wont this work? 
    $('#dialog-stergelu').data('url', url).dialog('open'); 
}); 

Затем в buttons опции диалоговом, в

buttons: { 
    'Sterge': function() { 
     window.location = $(this).data("url"); 
    }, 
    'Anuleaza': function() { 
     $(this).dialog('close'); 
    } 
} 

Вот рабочий пример: http://jsbin.com/edudun/4/edit

0

Попробуйте заменить эту строку:

window.location = $(this).attr('confirm'); 

с этим:

window.location = $('.opener').attr('confirm'); 
+0

нет, с удачей "undefined" –

0

После window.location установлен браузер изменяет URL и скрипты на странице будут прекратить выполнение.

0

Я думаю, что ваш вопрос в том, что вы хотите получить span, который был нажат да? Вместо неправильного выбора первого, соответствующего $('.opener') да?

Вы должны изменить свой щелчок обратного вызова:

$('.opener').click(function(e) { 
    // jqEl is your specfic jQuery span.opener that was clicked. 
    // You can pass it to the dialog using any number of methods. 
    var jqEl = $(e.target); 

    ('#dialog-stergelu').dialog('open'); 
}); 
0
Try this code... 

$("#dialog-stergelu").dialog({ 
    autoOpen: false, 
    bgiframe: true, 
    resizable: false, 
    width: 400, 
    modal: true, 
    overlay: { 
     backgroundColor: '#000', 
     opacity: 0.5 
    }, 
    buttons: { 
     'Sterge': function() { 
      window.location = $('#dialog-stergelu').data('confirm'); 
     }, 
     'Anuleaza': function() { 
      $(this).dialog('close'); 
     } 
    } 
}); 
$('.opener').click(function() { 
    $('#dialog-stergelu').data('confirm',$(this).attr('confirm')); 
    $('#dialog-stergelu').dialog('open'); 
}); 
Смежные вопросы