2017-05-05 109 views
1

我正在研究.NET MVC,并试图在点击div后播放iframe视频。jquery第二次点击后发射

HTML

<div class="entry-post" > 

    <h3 class="entry-title" style="cursor:pointer" onclick="$.Sakla.al('@("ifr"+item.Id)','@item.Link')" > 

    @item.Baslik <img src="~/Content/img/com.png" /> </h3> 

    <div class="entry-content" > 

     <iframe id="@("ifr"+item.Id)" width="560" height="315" frameborder="0" allowfullscreen></iframe> 
    </div> 
    <hr /> 
</div> 

JS

<script type="text/javascript"> 
    $(document).ready(function ($) { 

     $(".entry-content").hide('slow'); 

     $(".entry-title").click(function() { 

      $(this).parent().children(".entry-content").show(500); 
      $.Sakla = { 

      al: function (gelenifr,gelenlink) { 
       //alert(gelenifr + gelenlink); 
       var ifr = $('#'+gelenifr+''); 
        ifr.toggle(function() { 
         if (ifr.is(':visible')) ifr.attr('src', ''+gelenlink+''); 
         else ifr.attr('src', '') 
        }) 

      } 
     } 

     }); 

    }); 

</script> 

所有这些是我迄今所做的。它只有在第二次点击div后才有效。那么,我应该怎么想?

回答

3

这是因为您有两个事件处理程序设置为".entry-title"

一个是在HTML内嵌:

onclick="$.Sakla.al('@("ifr"+item.Id)','@item.Link')" 

,一个是被设置在document.ready回调:

$(".entry-title").click(function() { 

由于@Sasang指出,如果我们在document.ready看回调,我们可以看到这是$.Sakla正在定义的位置,所以onclick处理程序将不会工作,直到点击。

不应使用内联HTML事件处理程序(onclick,onmouseover等)。相反,与object.addEventListener()或使用jQuery注册的事件处理程序在纯JavaScript:object.on("eventName", callback)

+0

另外2点击原因可能是由于该'$ .Sakla.al'是第一次点击 – Sasang

+0

是后才确定的事实。我会补充一点。 –

+0

感谢您的回复。我不擅长Js。那么,我应该做什么改变? – Quicksilver