1

以下のコード ブロックでは、内のタグを呼び出しevent.preventDefaultて、リスト要素をクリックしたときにタグがその属性のページにリダイレクトされないようにします。やってみましたが、エラーになります。どうすればこれを行うことができますか?a.ul liahref$this.find("a").preventDefault();

$(document).ready(function () {
    $(".ul li").on("click", function () {
        var $this = $(this);
        $this.find("a").preventDefault();

        // switch all lists off 
        $(".selectedList, .checkedList").removeClass("selectedList, checkedList");
        // switch this list on  
        $this.addClass("selectedList, checkedList");
    });
});
4

6 に答える 6

2

要素ではなくイベントオブジェクトでevent.preventDefaultを使用できますDOM。イベントクリックイベントをに追加して呼び出すことで、トリックを行うことができますpreventDefault

$(".ul li a").click(function(event){    
     event.preventDefault();    
});
于 2013-03-21T11:25:29.527 に答える
2
$(".ul li a").on("click", function(e)
{
    var $this = $(this);
    e.preventDefault();

    $(".selectedList, .checkedList").removeClass("selectedList, checkedList");
    // switch this list on  
    $this.parent().addClass("selectedList, checkedList");//or parents('li')
});

最後に.parentif ais の直接の子をli使用.parents('li')するか、 に追加classするために使用しparent liます。

また

closest('li')うまくいきます。

于 2013-03-21T11:26:32.800 に答える
1

イベント オブジェクトpreventDefault()を呼び出す必要があります。

,addClass の使用法も間違っていると思います。複数のクラスを追加/削除する場合は、クラス名の間に何もないはずです

$(document).ready(function() {
        $(".ul li a").on("click", function(e) {
            var $this = $(this);
            e.preventDefault();

            // switch all lists off 
            $(".selectedList, .checkedList").removeClass("selectedList checkedList");
            // switch this list on  
            $this.addClass("selectedList checkedList");
        });
    });
于 2013-03-21T11:25:15.173 に答える
0

イベントオブジェクト. preventDefault()はイベント用です。

$(document).ready(function() {
        $(".ul li").on("click", function(evt) {
            var $this = $(this);
            evt.preventDefault(); // this should be like this. 

            // switch all lists off 
            $(".selectedList, .checkedList").removeClass("selectedList, checkedList");
            // switch this list on  
            $this.addClass("selectedList, checkedList");
        });
    });
于 2013-03-21T11:25:45.313 に答える
0

クリックイベントにはa要素を使用するだけです

$(document).ready(function() {
    $(".ul li a").on("click", function( e ) {
        var $this = $(this);
        e.preventDefault();

        // switch all lists off 
        $(".selectedList, .checkedList").removeClass("selectedList, checkedList");
        // switch this list on  
        $this.parent( 'li' ).addClass("selectedList, checkedList");
    });
});
于 2013-03-21T11:26:06.987 に答える
0

関数は、最初の引数としてイベント ハンドラー関数に渡される.preventDefault()jQuery 正規化オブジェクトに属します。event無名関数のパラメーターに名前を指定して使用するだけです。

$(document).ready(function() {
    $(".ul li").on("click", function(event) {
        var $this = $(this);
        event.preventDefault();

        // switch all lists off 
        $(".selectedList, .checkedList").removeClass("selectedList checkedList");
        // switch this list on  
        $this.addClass("selectedList checkedList");
    });
});

イベントのバブリングによりclick、要素でトリガーされたすべてのイベント<a>も、このイベント ハンドラーによって処理される必要があります。また、.addClass()および.removeClass()関数を使用する場合、クラス名のリストはコンマではなくスペースで区切られていることに注意して"selectedList checkedList"ください。"selectedList, checkedList"クラスがselectedList,.

于 2013-03-21T11:26:36.087 に答える