2015-11-06 65 views
0
$('.pop').each(function() { 
    var $elem = $(this); 
    $elem.popover({ 
     placement: 'auto', 
     trigger: 'hover', 
     html: true, 
     container: $elem, 
     animation: true, 
     content: function() { 
      var pop_dest = $(this).attr("data-pop"); 
      //console.log(plant); 
      return $("#"+pop_dest).html(); 
     } 
    }); 
}); 

$('#english').click(function() { // ---> THIS PART DOES NOT WORK 
    alert("english"); 
}); 

$('#turkce').click(function() { // ---> THIS PART DOES NOT WORK 
    console.log("turkce"); 
}); 

彈出窗口中有2個按鈕。但是他們的點擊事件不起作用。我怎樣才能點擊按鈕點擊點擊事件?我的HTML代碼如下。彈出窗口單擊事件不起作用

<li> 
    <a href="javascript: void(0);" id="languages" class="pop" data-html="true" data-toggle="popover" data-pop="popper-content" class="popper"> 
     <?=$language["languages"]?> 
    </a> 
    <div class="hide" id="popper-content"> 
     <ul class="lang-list"> 
      <li class="en"> 
       <button id="english">English</button> 
      </li> 
      <li class="tr"> 
       <button id="turkce">Türkçe</button> 
      </li> 
     </ul> 
    </div> 
</li> 
+0

你想觸發什麼事件? –

+0

$('#english')。click(function(){ alert(「english」); });這部分不起作用。 – Dauezevy

+0

你可以嘗試把$ .each函數看看它是否工作? –

回答

5

當你調用click功能,按鈕不會添加到頁面,但(因爲他們是在一個動態添加酥料餅),所以你必須用這些東西把未來的護理添加的內容:

$('body').on('click', '#english', function() { 
    alert("english"); 
}); 
+1

非常感謝,但你能解釋一下嗎? – Dauezevy

+0

我相信點擊功能本身也會起作用嗎? –

1

您應該委託的事件,以確保事件得到的所需的DOM元素,如果它不存在於JS被執行時間:

$("body").on('click', '#english', function() { 
    alert("english"); 
}); 

$("body").on('click', '#turkce', function() { 
    alert("turkce"); 
}); 

你可以通過使用on方法使用jQuery進行事件委託,其中選擇器是將事件委託給子級的父節點,第一個參數是事件名稱click,第二個是要讓事件委派給#english的子級,以及第三個參數是處理程序。

1

popover的內容被動態添加到頁面中。這意味着,當您嘗試附加事件處理程序時,頁面加載DOM中都不存在按鈕。要解決該問題,請使用委派的事件處理程序:

$(document).on('click', '#english', function() { 
    alert("english"); 
}).on('click', '#turkce', function() { 
    console.log("turkce"); 
}); 
0

的問題是,<button>submit默認類型。由於您提供了自己的點擊處理程序,因此您不需要該默認行爲。你需要type="button"的按鈕。

<button id="english" type="button">English</button>