2013-08-16 2 views
1

У меня возникли проблемы с этим подтверждением, которое появляется несколько раз. Я подтверждаю только после нажатия определенной кнопки. Если я только нажимаю на эту кнопку, это нужно только один раз задать для этой кнопки, но она спрашивает меня один раз для каждой кнопки этого класса.jQuery подтверждают, что popping несколько раз

Любые идеи, почему это цикл, если я только увольняю это условие, когда пользователь нажимает на определенную кнопку?

$(".TweetNow").each(function() {  
    $(this).click(function TweetThis() { 

     var identify = $(this).attr('id'); 
     var prestart = identify.indexOf('_'); 
     var start = prestart + 1; 
     var end = identify.length; 
     var position = identify.substr(start, end); 

     var message = $("#Tweet_" + position).val(); 
     var site = $("#SiteLabel").text(); 

     if (message != '') { 
      var trend = $("#Topic_" + position).text(); 
      var website = $("#SiteLabel").text(); 
      if (confirm("Are you sure you want to tweet the following message:\n" + message + " ?")) { 
       PageMethods.TweetThis(message, site, trend, website); 
       location.reload(); 
      } 
     } 
    }); 
}); 
+1

Почему вы используете .each здесь? –

+2

Это потому, что вы используете .each с селектором типа класса. Он будет запускать эту функцию для каждого элемента, который соответствует вашему селектору. – Zack

+1

@ Зак, который не имеет значения, но он использует 'this' внутри, в результате чего каждое событие привязки привязывается к каждому элементу. –

ответ

0

Изменить код в

$(".TweetNow").click(function() { 
    var identify = $(this).attr('id'); 
    //Rest of code 
}); 

Вместо

$(".TweetNow").each(function() {  
    $(this).click(function TweetThis() { 

    }); 
}); 
Смежные вопросы