Javascript “替代方案”;这";变量
我试图用JavaScript编写一个简单的脚本,只是为了测试。我定义了两个变量,有点不必要,但无论如何都很好,它们为两种不同的场景保存字符串值,如果按钮前的元素在单击按钮时包含粗体文本,则相应的变量将显示在警报对话框中 这是我的代码:Javascript “替代方案”;这";变量,javascript,jquery,Javascript,Jquery,我试图用JavaScript编写一个简单的脚本,只是为了测试。我定义了两个变量,有点不必要,但无论如何都很好,它们为两种不同的场景保存字符串值,如果按钮前的元素在单击按钮时包含粗体文本,则相应的变量将显示在警报对话框中 这是我的代码: $(document).ready(function(){ var Bold="Yes, some of this text is bold!"; var NoBold="No, none of this text is bold."; $("&l
$(document).ready(function(){
var Bold="Yes, some of this text is bold!";
var NoBold="No, none of this text is bold.";
$("<input class="BoldButton" type="button" value="Bold?" id="IntroButton"></input>")
.insertAfter("#intro");
$("<input class="BoldButton" type="button" value="Bold?" id="LatestNewsButton"></input>")
.insertAfter("#news h2");
$("input.BoldButton").click(function(){
if () {
$('').();
} else {
$('').();
{
});
});
$(文档).ready(函数(){
var Bold=“是的,有些文本是粗体的!”;
var NoBold=“否,此文本均不加粗。”;
$("")
.insertAfter(“#简介”);
$("")
.insertAfter(“#新闻h2”);
$(“input.BoldButton”)。单击(函数(){
如果(){
$('').();
}否则{
$('').();
{
});
});
当我意识到我不知道如何检查Button是否在按钮上面的元素时,我正在写我的if if语句。我在考虑使用伪变量,但是我确信这是错误的,因为它不是“这个”之前的元素吗?伪变量?我想我可能混淆了它的用途,很抱歉
无论如何,我真的只需要一种方法来检查按钮前的元素是否包含粗体文本,然后我就可以做其余的事情了。:)
谢谢
最终代码:
$(document).ready(function(){
var Bold="Yes, some of this text is bold!";
var NoBold="No, none of this text is bold.";
$('<input class="BoldButton" type="button" value="Bold?" id="IntroButton">')
.insertAfter("#intro");
$('<input class="BoldButton" type="button" value="Bold?" id="LatestNewsButton">')
.insertAfter("#news p");
$("input.BoldButton").click(function(){
if ($(this).prev().is(':has(b, strong)')) {
alert(Bold);
} else {
alert(NoBold);
}
});
});
$(文档).ready(函数(){
var Bold=“是的,有些文本是粗体的!”;
var NoBold=“否,此文本均不加粗。”;
$('')
.insertAfter(“#简介”);
$('')
.insertAfter(“#新闻页”);
$(“input.BoldButton”)。单击(函数(){
if($(this).prev()是(':has(b,strong)')){
警报(粗体);
}否则{
警惕(诺博尔德);
}
});
});
可以使用.prev()
:$(this.prev()
您想做的事情可以使用
$("input.BoldButton").click(function(){
if ($(this).prev().find('b').length) {
// bold text in there!
} else {
// no bold text
}
});
但是请记住,这只会查找使用
增强的文本。一些所见即所得编辑器更喜欢
,因此您必须.find('strong')
(或者使用.find('b,strong')
“before”元素可以使用.prev()
:$(this).prev()选择
您想做的事情可以使用
$("input.BoldButton").click(function(){
if ($(this).prev().find('b').length) {
// bold text in there!
} else {
// no bold text
}
});
但是,请记住,这只会查找使用
增强的文本。一些所见即所得编辑器更喜欢
,因此您必须.find('strong')
(或者使用.find('b,strong')同时进行查找)
您可以使用jquery函数。您可以使用jquery函数。如果文本是使用
标记加粗的,您可以使用.is()
方法和前面元素上的:has()
选择器来检查它是否有任何后代
标记
像这样:
$("input.BoldButton").click(function(){
if ($(this).prev().is(':has(b,strong)')) {
// do something
} else {
// do something else
}
});
.is()
如果与提供的选择器匹配,则返回一个布尔值。:has()
选择器确定是否有提供选择器的后代
编辑:根据注释中的要求进行更新,以包括对
标记的检查。如果文本是使用标记加粗的,您可以使用.is()
方法和前一个元素上的:has()
选择器来检查它是否有任何后代
标记
$("input.BoldButton").click(function(){
var myprev = $(this).prev();
if () {
$('').();
} else {
$('').();
{
});
像这样:
$("input.BoldButton").click(function(){
if ($(this).prev().is(':has(b,strong)')) {
// do something
} else {
// do something else
}
});
.is()
如果与提供的选择器匹配,则返回一个布尔值。:has()
选择器确定是否有提供选择器的后代
编辑:根据注释中的要求进行编辑,更新后还包括对
标记的检查
$("input.BoldButton").click(function(){
var myprev = $(this).prev();
if () {
$('').();
} else {
$('').();
{
});
编辑:我的好奇心征服了我,所以我做了以下几件事:
var myprev = $(this).prev();
var mybold = myprev.css('font-weight');
if (mybold > 400)...
在我看来,这比公认的答案要好,因为它适用于“b”、“strong”以及CSS集值,这些值有400个,如“normal”、“bold”、“bold”等。
(仅在IE8中测试,但似乎有效,如果有人发现其他浏览器的结果不同,我会很好奇)
下面是一个工作示例,展示了这一点的效果:
编辑:我的好奇心征服了我,所以我做了以下几件事:
var myprev = $(this).prev();
var mybold = myprev.css('font-weight');
if (mybold > 400)...
在我看来,这比公认的答案要好,因为它适用于“b”、“strong”以及CSS集值,这些值有400个,如“normal”、“bold”、“bold”等。
(仅在IE8中测试,但似乎有效,如果有人发现其他浏览器的结果不同,我会很好奇)
下面是一个工作示例来说明此操作的效果:您的意思是希望引用按钮的前一个同级项?美元(“input.BoldButton:before”)或类似的东西怎么样?(我不记得:before是否合法:-我想您希望在$('insertAfter中的'elements'不是双引号。是的,谢谢,我刚刚在我的真实代码中更新了它,意识到。我的缺点是,.click()必须是.live('click'函数()…才能以这种方式在插入的元素上工作,或者使用.delegate()取决于您的版本和标记。您的意思是您想引用按钮的前一个同级项?美元(“input.BoldButton:before”)或类似的东西怎么样?(我不记得:before是否合法:-我想您希望在$('insertAfter中的'elements'不是双引号。是的,谢谢,我刚刚在我的真实代码中更新了它,意识到。我的缺点是,.click()必须是.live('click'函数()…才能以这种方式在插入的元素上工作,或者使用.delegate()取决于您的版本和标记。@BOSS:文本是使用b
标记还是通过CSS加粗的?是的,它使用的是strong,所以我将使用上面MvanGeest的示例,只是为了掩盖任何不一致性。好的,很好,这与patrick的类似,但它也包含。而“has”组件不是。Is的选择器,因此我们可以使用。has:)@MvanGeest-您的更新版本将无法工作,因为.has()
将始终返回jQuery对象,因此