2013-04-26 5 views
2

Я настраиваю прямо сейчас, чтобы использовать тег div, чтобы вызвать скрытую радиокнопку. Однако, когда я нажимаю один раз на div, переключатель переключается, но я должен дважды щелкнуть div, чтобы данные были отправлены через ajax. Любые идеи о том, что вызывает это и как его исправить?jQuery, используя div как радиокнопка

JQuery

$(function(){ 
    $(".albumcover_tag").click(function(e){ 
     e.stopPropagation(); 
     $('.edit_album').trigger('submit.rails'); 
    }); 
    $(".albumcover-item").click(function(e){ 
     $('.albumcover-item').removeClass("radio-selected"); 
     $(this).addClass("radio-selected"); 
     $(this).find('input').click(); 
     return false; 
    }); 
    $('.albumcover_tag:checked').parent('.albumcover-item').addClass("radio-selected"); 
}); 

HTML

<div class="albumcover-item"> 
    <label for="album_albumcover">Set as Album Cover </label> 
    <input class="albumcover_tag" id="album_albumcover_id_2" name="album[albumcover_id]" type="radio" value="2"> 
</div> 

ПРИМЕЧАНИЕ: Я хочу, чтобы иметь возможность включить Аякса на один клик, а не двойной щелчок.

+0

Я думаю, что .click() и .dblclick() будут конфликтующими, если будут добавлены в тот же элемент. –

+0

для вашего первого вопроса взгляните на эту скрипку http://jsfiddle.net/sarfarazdesigner/myLTC/2/ –

ответ

0

вы найдете ответ здесь, вы должны отменить один клик при запуске doubleclick.

Need to cancel click/mouseup events when double-click event detected

function singleClick(e) { 
    // do something, "this" will be the DOM element 
} 

function doubleClick(e) { 
    // do something, "this" will be the DOM element 
} 

$(selector).click(function(e) { 
    var that = this; 
    setTimeout(function() { 
     var dblclick = parseInt($(that).data('double'), 10); 
     if (dblclick > 0) { 
      $(that).data('double', dblclick-1); 
     } else { 
      singleClick.call(that, e); 
     } 
    }, 300); 
}).dblclick(function(e) { 
    $(this).data('double', 2); 
    doubleClick.call(this, e); 
}); 
+0

Я хочу, чтобы ajax отправил по одному клику, а дважды щелкнул .... –

0

Попробуйте это:

$(function(){ 
    $(".albumcover-item").click(function(e){ 
     $('.albumcover-item').removeClass("radio-selected"); 
     $(this).addClass("radio-selected"); 
     $('.edit_album').trigger('submit.rails'); 
    }); 
}); 
+0

это не сработало, потому что он не изменил переключатель, на который опирается форма. –

+0

Можете ли вы нам html для класса 'edit_album' – vher2

0

Я установил его, перемещая АЯКС запрос на click() триггера Div элемента.

$(".albumcover-item").click(function(e){ 
    ... 
    $('.edit_album').trigger('submit.rails'); 
    ... 
}); 
Смежные вопросы