2014-09-17 4 views
0

У меня есть это fiddle здесь, который срабатывает два раза, когда я выбираю автомобили.JQuery триггер срабатывает дважды

вот мой код

$(document).on('change','.sellkop',function(){ 
    if ($("#rs").is(':checked')) { 
      $("#text_container").after(price_option()); 
     $("#sellbuy").after(cars()) ; 
     }; 
    if ($("#rk").is(':checked')) { 
      $("#price_container").remove(); 
     $(".cars").remove(); 
      $("#licensenumber_c").hide(); 
      $(".toolimage").hide(); 
    }; 
}); 

$('#category_group').on('change', function() { // this is select options 

    if ($(this).val() == 101) { 
      $(".sell").remove(); 
      $("#categories").after(saljkop()); 

      $("#underKategory").hide(); 
      $(".toolimage").show(); 
      $('.sellkop').trigger('change'); 

} 
if ($(this).val() == 102) { 
      $(".sell").remove(); 
      $("#categories").after(saljkop()); 
      $("#text_container").after(price_option()); 
      $(".toolimage").hide(); 
      $("#underKategory").show(); 
       $('.sellkop').trigger('change'); 
    } 

}); 

почему это происходит?

в скрипке, когда я выбираю автомобили, которые я получил (исправить, предлагаю), нажав два раза.

ответ

0

Я нашел решение, как вызвать радиокнопки этим:

изменил этот

$('.sellkop').trigger('change'); 

в

$('#sellbuy input[type="radio"]:checked').trigger('change'); 

fiddle, для тех, кто считает это полезным

1

У вас есть 2 элемента с классом «sellkop», поэтому он запускается два раза. .

(И КУПИТЬ и кнопка ПРОДАВАТЬ содержит класс 'sellkop'

+0

Как я могу активировать проверку, проверяется? –

+0

, так почему тогда '$ (« # sellbuy »). After (cars());' также запускается два раза. –

+0

@ KarimDaraf Событие 'change' запускается один раз для каждого элемента с классом' sellkop'. Итак, дважды. –

0

Я получил решение. Его истинное событие (изменение) было вызвано два раза.

I have improved the checks in change using a flag. Also tweaked some of your lines to get your desired output. 

Hope you achieved what you were asking for. :) 

Working Fiddle : 
    http://jsfiddle.net/mayurRahul/2jaq6hnr/ 


**HTML** 

<div id = "categories"> 
    <select name="category_group" id="category_group" > 
       <option value="0">choose category</option>    
       <option value='101' id='cat101' > cars </option>  
       <option value='102' id='cat102' > others </option> 
    </select> 
</div> 
<div id="underKategory" >sthis is subcategory</div> 
<div id="toolimage1" class="toolimage">dddddd</div> 
<div id="text_container" class="text_container">textttttt</div> 


**JAVASCRIPT** 

    function saljkop(){ 
var x = "<div class='sex sell' id='sellbuy' >\ 
     <label ><input id='rs' type='radio' class='radio sellkop' value='s' name='type' > Sell </label>\ 
     <label ><input id='rk' type='radio' class='radio sellkop' value='k' name='type'>buy</label>\ 
     </div>"; 
return x ; 
} 
function price_option(){ 
var x = '<div class="container" id = "price_container">\ 
     <div >\ 
     <label>\ 
    <input class="price_option" name="price_opt" value="1" type="radio"> Fix </label>\ 
    <label class="css-label">\ 
     <input class="price_option" name="price_opt" value="2" type="radio"> offer </label>\ 
     </div>\ 
</div>'; 
return x ; 
} 
function cars(){ 
     var x = '<div class="cars" ><div id="licenscontainer" ><div id="licensenumber_c">\ 
<input id="licensenumber" placeholder="Registrer number" type="text" value="" >'; 
    return x; 
} 

$(document).on('change','.sellkop',function(){ 
     var flag = false; 
     if ($("#rs").is(':checked')) { 
       $("#text_container").after(price_option()); 
       $("#sellbuy").after(cars()) ; 
       flag = true; 
      }; 
     if ($("#rk").is(':checked')) { 
       $("#price_container").remove(); 
       $(".cars").remove(); 
       $("#licensenumber_c").hide(); 
       $(".toolimage").hide(); 
       flag = true; 
     }; 
    if(!flag){ 
      $("#rs").attr("checked","checked"); 
      console.log("no-das"); 
    } 
    }); 

$('#category_group').on('change', function() { // this is select options 

    if ($(this).val() == 101) { 
       $(".sell,#price_container,#licenscontainer").remove(); 
       $("#categories").after(saljkop()); 

       $("#underKategory").hide(); 
       $(".toolimage").show(); 
       $('.sellkop').trigger('change'); 

    } 
    if ($(this).val() == 102) { 
       $(".sell,#price_container,#licenscontainer").remove(); 
       $("#categories").after(saljkop()); 
       $("#text_container").after(price_option()); 
       $(".toolimage").hide(); 
       $("#underKategory").show(); 
        $('.sellkop').trigger('change'); 
    } 

    ///............many other values continue 
}); 
Смежные вопросы