javascript - 鼠标松开、鼠标按下功能的更快编码

标签 javascript jquery css

我有一个 jQuery 函数,当用户单击文本图像描述时,该函数会将图像加载到拖放区域。

我有几百张图片。我想知道是否有更快、更有效的方法来处理用户单击文本时更改颜色的代码?我不是编码专家...... TIA

代码片段:

$('#p1').click (function(){
loadImage("../images/myImage.png", 150, 100, '.startDropArea');
});

$('#p1').mousedown (function(){
$('#p1').css({"color":"green"});   
});
$('#p1').mouseup (function(){
$('#p1').css({"color":"black"});   
});

HTML

<div data-role="collapsible">
    <h4>Header</h4>
<p id="p1"> Start</p>

最佳答案

是的,有可能以一种比为每个元素编写处理程序更有效的方式来做到这一点。首先,简单的部分 - 我们将向所有相关的 div 添加一个类,以便我们可以一次选择它们,并使用它来应用 mousedown/mouseup 处理程序。

HTML:

<div data-role="collapsible">
    <h4>Header</h4>
    <p class="image-loader" id="p1"> Start</p>
</div>

JS - 请注意,我们现在使用 $(this) 来获取处理程序函数中的当前元素,并链接我们的调用,因此我们不必重新选择元素:

$('.image-loader').mousedown (function(){
    $(this).css({"color":"green"});   
})
.mouseup (function(){
    $(this).css({"color":"black"});
);

点击功能会花费更多的精力,因为虽然我们想要对每个元素执行的操作都是相同的,但我们可能必须使用不同的图像源。我们将通过在我们的

元素上使用 data-image-src 属性来实现这一点。

HTML:

<div data-role="collapsible">
    <h4>Header</h4>
    <p class="image-loader" data-image-src="../images/myImage.png" id="p1"> Start</p>
</div>

JS: 我们现在可以在点击处理程序中获取数据属性,并使用它来加载适当的图像。

$('.image-loader').click (function(){
    loadImage($(this).data('image-src'), 150, 100, '.startDropArea');
});

我们也可以将我们的点击处理程序链接到我们之前的 mouseup/mousedown 处理程序上,所以我们最终的 Javascript 是......

$('.image-loader')
.mousedown (function(){
    $(this).css({"color":"green"});   
})
.mouseup (function(){
    $(this).css({"color":"black"});
)
.click (function(){
    loadImage($(this).data('image-src'), 150, 100, '.startDropArea');
});

关于javascript - 鼠标松开、鼠标按下功能的更快编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40896991/

相关文章:

javascript - 如何访问数组中的 URL 并将用户发送给它

jquery - 使用 AJAX 加载并锚定加载的内容

javascript - "a.getFullYear is not a function"尝试获取日期差异时

javascript - 如何将 jsPDF 的文本 block 动态拆分为页面?

javascript - 将数组字符串转换为数组javascript

javascript - 幻灯片更改时动画 div 背景位置

jQuery:点击时向下滚动页面设定增量(以像素为单位)?

javascript - 输入文本在 Chrome 中显示,但在 Firefox 中不显示

html - 删除最后一列的背景图片

jquery - 使用 CSS 和 JQuery 绘制垂直线