2014-01-09 86 views
1

我正在嘗試將點擊事件與jQuery中的函數結合起來,但不知何故它只能在第二次點擊後才起作用。爲點擊元素分配id,然後運行scrolld.js函數

點擊後,起初我需要的元素的id改變什麼,我給它,然後函數需要趕上與改變ID和運行的元素。

我不能帶班在這裏工作很遺憾,所以我不得不改變對點擊的元素ID。

$('.element').click(function() 
// here the element gets id "divBtn" 
    {if(this.id){this.id = "divBtn";} 

// this is the function I need to run on the above first click 
// this function is also the trigger to call scrolld.js (scrolldjs.com) so I am not sure if I 
// can modify this part or not 
    $("[id*='Btn']").stop(true).on('click',function(e) 
     {e.preventDefault();      
    $(this).scrolld(); 


}); 

});

在第二行中的元素的id被變更爲「divBtn」與第一點擊。這可以在控制檯中看到。

但是隻有在第二次點擊雖然功能捕獲ID爲「divBtn」和運行的元素。

我該如何將它合併爲一次點擊?

新的jQuery和學習,所以這可能是非常明顯的。謝謝你的幫助或輸入。如果你有答案,如果你不介意的話,請評論你的代碼或者詳細解釋,因爲我剛剛開始使用jQuery。謝謝。

編輯01:請注意腳本/函數我需要在元素上運行只適用於在id的末尾有一個id和「Btn」的元素,因此我需要使用元素的id。如果有可能擺脫第二次點擊並運行我想要的功能。

編輯02:這是一個工作 jsfiddle http://jsfiddle.net/ASzTg/10/你可以在瀏覽器控制檯上看到id在第一次點擊時改變。然後第二次點擊捕捉到scrolld腳本並完成它的工作。從jsfiddle你可以看到我想要得到的,點擊導航欄鏈接很好地滾動所需的div到我想要的位置(或任何其他)。

Scrolld用於滾動所述內容包裝到所希望的位置(頂部或任何其他)一旦導航欄鏈路的任何被點擊。由於Scrolld只接受一個id,我必須在點擊時指定id,然後運行腳本。

希望這有助於我所要做的。如果你看到http://scrolldjs.com/#use你可以看到觸發器,這可能解釋了兩個事件處理程序。希望這有助於找到正確的答案。

問候

+0

這是沒有意義的,事件處理程序內的事件處理程序,使用停止()沒有明顯的原因,改變某些元素的ID,使其與一個事件處理程序工作,curlybraces中使用聖各種各樣的方式? – adeneo

+0

在第二行,如果你將你的id設置爲divBtn,你爲什麼要在下一行檢查id是否是divBtn?另外,如果你將你的div id設置爲「divBtn」,你爲什麼要將點擊事件綁定到id =「Btn」?它不應該是$(「[id * ='divBtn']」)。on('click',function(e) –

+0

該函數在最後捕獲所有具有id「Btn」的元素,然後將視口滾動到該元素的頂部或所需的其他位置。由於我無法使該函數工作類我不得不通過單擊來指定帶有「Btn」id的(錨)元素,因爲我不能在html中擁有多個具有相同id的錨。觸發器函數在這裏給出了scrolldjs.com並且如果我能修改對於奇怪的格式只是從jQuery開始對不起, – moderntimes

回答

0

可以徹底刪除第二個事件處理程序 - 有沒有必要到2個點擊事件處理程序綁定到同一元素

$('.element').click(function (e) { // bind event handler to element/s 
    e.preventDefault(); // prevent default action 
    if (this.id) { 
     this.id = "divBtn"; // add id if it doesn't have one 
    }   
    $(this).scrolld(); // run your method 
}); 

但如果你有多個.element元素 - 它們最終會具有相同ID是無效的HTML

+0

我想我需要第二個點擊事件處理程序,因爲它檢查點擊的元素是否具有id「divBtn」,然後在其上運行函數/腳本scrolld.js。只有在第二次點擊之後,我的代碼才能起作用,因爲第一次點擊時id已經改變。嘗試合併兩個事件處理程序,並儘可能少地改變從scrolldjs.com獲取的第二個初始化函數。 – moderntimes

+0

你可以顯示一個標記,也許做一個小提琴?這只是一個元素還是多個元素?那麼一些元素已經有了不同的ID?我假設你可以使用委派來做你想做的事情,但不清楚你的設置是什麼 –

+0

如果你簽出scrolldjs.com/#use,你會看到觸發功能。有關演示,您可以查看srolldjs.com/demo/。我想要使​​用這種方式是,當點擊任何所需的元素div移動到指定的位置。所以基本上分配多個錨定到一個目標。添加更多標記.. – moderntimes

相關問題