我想.mouseover仅在鼠标在"触发"元素上放置预定持续时间(例如500毫秒)时才激活功能.
例如
$('.featured').mouseover(function () {
$('.feat-txt').fadeOut("fast");
});
Run Code Online (Sandbox Code Playgroud)
仅当鼠标位于.featured元素上至少500毫秒时,该函数才能启动,而.feat-txt可以是FadeOut.在该元素上使用简单的鼠标(仅快速移动)不会激活该功能.
有关如何做到这一点的任何建议?
我有一系列的复选框,我点击了jquery脚本.当用户点击复选框时,它会打开另一系列复选框并继续.现在我的问题是,当用户检查其中几个复选框时,移动到下一页并出于某种原因他/她回到复选框页面.然后我应该把他/她检查过的所有盒子打开.当dom加载时,我写了一个复选框测试
$(document).ready(function(){
if($('.main').is(':checked')){
$(this).trigger('click');
}else{
//do nothing
}
$('.main').click(function(){
if($('.main').is(':checked')){
var val = $(this).attr('alt');
$('#'+val).show();
}else{
var val = $(this).attr('alt');
$('#'+val).hide();
}
});
});
Run Code Online (Sandbox Code Playgroud)
如上所述.Main是复选框类.点击它,我打开另一系列复选框.现在,我希望它们在再次访问页面时自动完成其复选框
我有一个简单的用户控件与事件:
using System.Windows;
namespace TriggersTest
{
public partial class MyControl
{
public MyControl()
{
InitializeComponent();
}
public static readonly RoutedEvent ButtonPressedEvent =
EventManager.RegisterRoutedEvent("ButtonPressed", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(MyControl));
public event RoutedEventHandler ButtonPressed
{
add { AddHandler(ButtonPressedEvent, value); }
remove { RemoveHandler(ButtonPressedEvent, value); }
}
private void OnButtonClick(object sender, RoutedEventArgs e)
{
RaiseEvent(new RoutedEventArgs { RoutedEvent = ButtonPressedEvent });
}
}
}
Run Code Online (Sandbox Code Playgroud)
我希望在另一个视图中捕获此事件:
<Window x:Class="TriggersTest.MainWindow"
Name="Root"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:local="clr-namespace:TriggersTest"
Title="MainWindow" Height="350" Width="525">
<Grid>
<local:MyControl>
<i:Interaction.Triggers>
<i:EventTrigger EventName="ButtonPressed">
<i:InvokeCommandAction Command="{Binding MyCommand, ElementName=Root}" /> …Run Code Online (Sandbox Code Playgroud) 在调试时,我textBox1.TextChanged可以查看事件订阅的数量吗?如果是,那我该如何钻研呢?我需要知道在给定时间有多少订阅用于调试,因为它看起来像是多次触发事件,但我怀疑这个错误确实textBox1.TextChanged += handler是因为在应用程序中管理不当,所以订阅者太多了.
这是我认为正在发生的事情的简化版本.如果可能的话,我只想设置一个断点并计算"textBox1.TextChanged"的订阅数量:
private void textBox1_TextChanged(object sender, EventArgs e)
{
textBox1.TextChanged += textBox1_TextChanged;
MessageBox.Show("asdf");
textBox1.TextChanged -= textBox1_TextChanged;
textBox1.Text = DateTime.Now.ToString();
textBox1.TextChanged += textBox1_TextChanged;
}
Run Code Online (Sandbox Code Playgroud)
这可能还是更复杂?
我有一个带有ItemsControl的WPF-View,它从ViewModel绑定ObservableCollection.现在我想逐渐淡出我从ObservableCollection中删除的项目.
视图模型:
public class ViewModel
{
public ObservableCollection<string> Items { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
视图:
<Window x:Class="Sandbox.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"
Name="mainWindow">
<Window.Resources>
<DataTemplate x:Key="mytemplate">
<DataTemplate.Resources>
<Storyboard x:Key="OnUnloaded">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)" Storyboard.TargetName="grid">
<EasingDoubleKeyFrame KeyTime="0" Value="1"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="-0"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)" Storyboard.TargetName="grid">
<EasingDoubleKeyFrame KeyTime="0" Value="0"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="-10"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</DataTemplate.Resources>
<Grid x:Name="grid" RenderTransformOrigin="0.5,0.5">
<Grid.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</Grid.RenderTransform>
<TextBox Text="{Binding Mode=OneWay}"/>
</Grid>
<DataTemplate.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Unloaded">
<BeginStoryboard Storyboard="{StaticResource OnUnloaded}"/>
</EventTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</Window.Resources>
<StackPanel>
<ItemsControl Grid.Row="1" ItemsSource="{Binding …Run Code Online (Sandbox Code Playgroud) 我有来自第三方库的TargetedTriggerAction,它想要调用/调用而不将其附加到按钮.我没有问题让它与按钮一起工作,但我想这样做是为了响应一些非UI事件.
这是动作的类声明:
public class MeasureAction : TargetedTriggerAction<Map>
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止的设置代码:
var measure = new MeasureAction();
measure.TargetObject = _mapControl;
measure.MeasureMode = MeasureAction.Mode.Polyline;
measure.MapUnits = DistanceUnit.Miles;
Run Code Online (Sandbox Code Playgroud)
我希望能够做这样的事情,但我知道Invoke受到保护:
measure.Invoke();
Run Code Online (Sandbox Code Playgroud) 我有一个当前在Control加载a 时开始的动画(动画本质上是一个等待的微调器,应用于空的ContentControl)。
然而,动画会不断旋转占用资源。我想要的是根据动画控件是否可见来启动/停止动画,这可能吗?
<Canvas.Triggers>
<EventTrigger RoutedEvent="ContentControl.Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="SpinnerRotate"
Storyboard.TargetProperty="Angle"
From="0" To="360" Duration="0:0:01.3"
RepeatBehavior="Forever" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Canvas.Triggers>
Run Code Online (Sandbox Code Playgroud)
我必须同时为 Silverlight 和 WPF 工作。
想象一下,我有2个gameobjects,红色的盘子和苹果.当比赛开始时(这是至关重要的),苹果已经在红盘上(2 gameobjects已经接触过).所以如果我移动红板,那么苹果就会成为红板的"父母"并跟随变换.
我怎么能这样做Unity3D?我看代码Trigger和Collision,他们都需要至少一个阶段是1移动gameobject碰撞其他的,我没有那个.
知道怎么处理这个吗?
我想触发一个以编程方式检查的复选框.例如:
$(function(){
//create a trigger that if a checkbox changes, eg is clicked/change show an alert
$("#idCheckbox").on("change", function(){
if($(this).is(':checked')){
alert("Is checked!");
}
});
//onload put it checked
$("#idCheckbox").attr("checked", "checked");
});
Run Code Online (Sandbox Code Playgroud)
"问题"是,如果我通过javascript检查加载复选框,则不会触发on()方法,并且不会显示警报.
上面的代码是一个例子,实际上检查复选框的脚本不是我的,我无法修改它.
我正在使用jQuery 1.8.0
有什么建议吗?
提前致谢.
我想知道Javascript或jQuery是否有办法删除事件监听器.假设我想创建一个我只想触发一次的函数,例如假设我想要一个按钮来显示文档中的一些隐藏元素,我会创建这个函数(假设隐藏元素有一个hidden隐藏的类他们):
jQuery('#toggler').click(function() {
console.log('Hidden elements are now shown');
jQuery('.hidden').removeClass('hidden');
});
Run Code Online (Sandbox Code Playgroud)
很简单吧?现在,我的实际问题进来了,我不希望jquery每次单击按钮时一次又一次地运行该函数,因为元素已经显示,所以有一个干净的方法吗?所以,在这个例子中多次点击切换器之后,我想只得到一个控制台消息.
我可以做jQuery(this).unbind('click'),但这会导致删除所有触发器,我只想删除当前触发器.
当我面对这样的场景时,我通常会做的就是解决它(这很丑陋,实际上并不会阻止代码执行,但只处理代码的结果):
var toggler_clicked = false;
jQuery('#toggler').click(function() {
if(toggler_clicked) return;
toggler_clicked = true;
console.log('Hidden elements are now shown');
jQuery('.hidden').removeClass('hidden');
});
Run Code Online (Sandbox Code Playgroud)
另外我不想使用jQuery one,因为当我需要有条件地删除触发器时我会遇到同样的问题,所以如果你能帮忙请给我一个动态的答案.
提前致谢 !
eventtrigger ×10
jquery ×4
wpf ×4
c# ×3
checkbox ×2
javascript ×2
action ×1
animation ×1
collision ×1
datatemplate ×1
delay ×1
duration ×1
events ×1
mouseover ×1
silverlight ×1
subscription ×1
wpf-controls ×1