私はこのコードを持っている:ボタンが原因で無効になっている場合、私はありませんクリック後に起動するクリックイベントを期待 jquery:ボタンが無効になっていてもクリックコールバックが呼び出されますか?
// jquery
$(':button').live('click', eventHandler);
<!--html-->
<button type="button" name="lvldown" disabled="disabled">Level down</button>
このW3Schoolsので
<button> disabled
description:
の定義と使用法
disabled属性は、ボタンを無効にすることを指定します。
無効なボタンは使用できず、クリックできません。
ただし、私のeventHandler
はまだクリック後に呼び出されています。何故ですか?私は本当に$(':button:not([disabled])').live('click', eventHandler);
のような何かをする必要がありますか?
EDIT:問題は実際には私のクロムの下でのみ発生する16.0.912.77。 firefoxとIEの下で私のコードは正常に動作します。 Btw。私はjQuery 1.7.1を使用します。ここではいくつかのスクリーンショットは以下のとおりです。 the button、console after load、console after click on the button
私のコードは今基本的に次のようになります。
jQuery(document).ready(function() {
$(':button').live('click', eventHandler);
constraintActions();
});
function constraintActions() {
// level down
$('.shopCat').not('.shopCat[data-parent]').each(function() {
var lvlDownButton = $(this).children('p').children('[name=lvldown]');
if ($(this).children('.shopCat').size() > 0 ||
$(this).next('.shopCat').size() == 0) {
lvlDownButton.addClass('disabled');
lvlDownButton.attr('disabled', 'disabled'); // also tried: lvlDownButton.prop("disabled", true);
} else {
lvlDownButton.removeClass('disabled');
lvlDownButton.removeAttr('disabled'); //also tried: lvlDownButton.prop("disabled", false);
}
});
function eventHandler() {
console.log($(this));
}
EDIT2:実際には、ボタンのHTMLは次のようになります。
<button type="button" class="submit btn-generic" name="lvldown" disabled="disabled">
<span class="lvldown">Podřadit</span>
</button>
私は本質を維持しようとしましたが、重要なことは除外したように見えます。その重要なことは、フォローイングラム作品、予想通り(!):
<button type="button" class="submit btn-generic" name="lvldown" disabled="disabled">
Podřadit
</button>
私はあなたがコメントで提供されている例に、内側スパンを追加しようとすると、私は(クローム16.0.912.77下)これらの結果を得る:
のJavascript( j08691):
$('button').live('click', function(){alert('FIRE!')});
のHTML(j08691による):
<button type="button" disabled="disabled">Level down</button> <!-- does not fire -->
<button type="button" disabled="disabled"><span>Level down</span></button> <!-- does fire!-->
Javascriptを(先のとがったことで、jqueryのは、バージョン1.5.2に設定されている):
$<button disabled>Hi</button>('button').live('click', function() {
alert("click");
});
Htmlの(先のとがっ別):
<button disabled>Hi</button> <!-- does not fire -->
<button disabled><span>Hi</span></button> <!-- does not fire -->
<!-- after changing jquery version to 1.7.1 -->
<button disabled><span>Hi</span></button> <!-- does fire! -->
Firefoxの下では、それは関係なく発生しません何、ちょうど(私の)クロムの下でこれのように振る舞います。私がやっていることに何か悪いことはありますか?
P.S.申し訳ありませんが、私の投稿が長らくなった
完全なコードを表示してください。それは起こるはずがありません。何かが欠けている... – gdoron
[それは私のためにうまくいく](http://jsfiddle.net/Pointy/xsxYy/)多分宇宙はあなた[w3schoolsを使うために](http://w3fools.com) 。 – Pointy
私のために発火しない:http://jsfiddle.net/khRBU/ – j08691